summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorGravatar Tom Willemse2024-06-11 00:58:31 -0700
committerGravatar Tom Willemse2024-06-11 14:59:42 -0700
commit15a30340e8867dfac3f88460fbd93b581e56f10f (patch)
tree5f1ec84c8003a229769613d0bd6c7d399ec94be4
parentb76f3afb27702c990275708c2ea0d432f35c6df1 (diff)
downloadscuttle-15a30340e8867dfac3f88460fbd93b581e56f10f.tar.gz
scuttle-15a30340e8867dfac3f88460fbd93b581e56f10f.zip
Initial steps towards a pico.css-based theme
-rw-r--r--data/templates/pico/about.tpl.php34
-rw-r--r--data/templates/pico/admin.tpl.php35
-rw-r--r--data/templates/pico/bookmarkcommondescriptionedit.tpl.php63
-rw-r--r--data/templates/pico/bookmarklet.inc.php152
-rw-r--r--data/templates/pico/bookmarks-thumbnail.inc.tpl.php18
-rw-r--r--data/templates/pico/bookmarks-vote-horizontal.inc.tpl.php50
-rw-r--r--data/templates/pico/bookmarks-vote.inc.tpl.php44
-rw-r--r--data/templates/pico/bookmarks.tpl.php444
-rw-r--r--data/templates/pico/bottom.inc.php30
-rw-r--r--data/templates/pico/dynamictags.inc.php148
-rw-r--r--data/templates/pico/editbookmark.tpl.php221
-rw-r--r--data/templates/pico/editprofile-sslclientcerts.tpl.php60
-rw-r--r--data/templates/pico/editprofile.tpl.php81
-rw-r--r--data/templates/pico/error.404.tpl.php9
-rw-r--r--data/templates/pico/error.500.tpl.php9
-rw-r--r--data/templates/pico/importDelicious.tpl.php42
-rw-r--r--data/templates/pico/importNetscape.tpl.php50
-rw-r--r--data/templates/pico/importStructure.tpl.php42
-rw-r--r--data/templates/pico/login.tpl.php41
-rw-r--r--data/templates/pico/password.tpl.php26
-rw-r--r--data/templates/pico/profile.tpl.php74
-rw-r--r--data/templates/pico/register.tpl.php54
-rw-r--r--data/templates/pico/rss.tpl.php30
-rw-r--r--data/templates/pico/search.menu.php50
-rw-r--r--data/templates/pico/sidebar.block.common.php28
-rw-r--r--data/templates/pico/sidebar.block.linked.php66
-rw-r--r--data/templates/pico/sidebar.block.menu.php80
-rw-r--r--data/templates/pico/sidebar.block.menu2.php71
-rw-r--r--data/templates/pico/sidebar.block.popular.php44
-rw-r--r--data/templates/pico/sidebar.block.recent.php39
-rw-r--r--data/templates/pico/sidebar.block.related.php40
-rw-r--r--data/templates/pico/sidebar.block.search.php51
-rw-r--r--data/templates/pico/sidebar.block.tagactions.php35
-rw-r--r--data/templates/pico/sidebar.block.users.php34
-rw-r--r--data/templates/pico/sidebar.block.watchlist.php60
-rw-r--r--data/templates/pico/sidebar.block.watchstatus.php28
-rw-r--r--data/templates/pico/sidebar.linkedtags.inc.php84
-rw-r--r--data/templates/pico/sidebar.tpl.php23
-rw-r--r--data/templates/pico/tag2tagadd.tpl.php57
-rw-r--r--data/templates/pico/tag2tagdelete.tpl.php49
-rw-r--r--data/templates/pico/tag2tagedit.tpl.php73
-rw-r--r--data/templates/pico/tagcommondescriptionedit.tpl.php53
-rw-r--r--data/templates/pico/tagdelete.tpl.php20
-rw-r--r--data/templates/pico/tagedit.tpl.php33
-rw-r--r--data/templates/pico/tagrename.tpl.php40
-rw-r--r--data/templates/pico/tags.tpl.php31
-rw-r--r--data/templates/pico/toolbar.inc.php30
-rw-r--r--data/templates/pico/top.inc.php87
-rw-r--r--data/templates/pico/users.tpl.php33
-rw-r--r--www/themes/pico/css/pico.min.css4
50 files changed, 3000 insertions, 0 deletions
diff --git a/data/templates/pico/about.tpl.php b/data/templates/pico/about.tpl.php
new file mode 100644
index 0000000..843a31f
--- /dev/null
+++ b/data/templates/pico/about.tpl.php
@@ -0,0 +1,34 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+?>
+
+<ul>
+<li><?php echo T_('<strong>Store</strong> all your favourite links in one place, accessible from anywhere.'); ?></li>
+<li><?php echo T_('<strong>Share</strong> your bookmarks with everyone, with friends on your watchlist or just keep them private.') ;?></li>
+<li><?php echo T_('<strong>Tag</strong> your bookmarks with as many labels as you want, instead of wrestling with folders.'); ?></li>
+<li><?php echo sprintf('<strong><a href="'.createURL('register').'">'.T_('Register now').'</a> </strong>'.T_(' to start using %s!'), $GLOBALS['sitename']); ?></li>
+</ul>
+
+<h3><?php echo T_('Geek Stuff'); ?></h3>
+<ul>
+<li><a href="http://sourceforge.net/projects/semanticscuttle/">Semantic Scuttle</a> <?php echo T_('is licensed under the ');?> <a href="http://www.gnu.org/copyleft/gpl.html"><acronym title="GNU\'s Not Unix">GNU</acronym> General Public License</a> (<?php echo T_('you can freely host it on your own web server.'); ?>)</li>
+<li><?php echo sprintf(T_('%1$s supports most of the <a href="http://www.delicious.com/help/api">del.icio.us <abbr title="Application Programming Interface">API</abbr></a>. Almost all of the neat tools made for that system can be modified to work with %1$s instead. If you find a tool that won\'t let you change the API address, ask the creator to add this setting. You never know, they might just do it.'), $GLOBALS['sitename']); ?></li>
+
+
+
+<?php if(!is_null($currentUser) && $currentUser->isAdmin()): ?>
+<li>SemanticScuttle v0.98.5</li>
+<?php endif ?>
+</ul>
+
+<h3><?php echo T_('Tips'); ?></h3>
+<ul>
+<li><?php echo T_('Add search plugin into your browser:'); ?> <a href="#" onclick="window.external.AddSearchProvider('<?php echo ROOT?>api/opensearch.php');">opensearch</a></li>
+<li><?php echo T_('The secret tag "system:unfiled" allows you to find bookmarks without tags.'); ?></li>
+<li><?php echo T_('The secret tag "system:imported" allows you to find imported bookmarks.'); ?></li>
+</ul>
+
+
+<?php
+$this->includeTemplate($GLOBALS['bottom_include']);
+?>
diff --git a/data/templates/pico/admin.tpl.php b/data/templates/pico/admin.tpl.php
new file mode 100644
index 0000000..50680f6
--- /dev/null
+++ b/data/templates/pico/admin.tpl.php
@@ -0,0 +1,35 @@
+<?php
+
+$this->includeTemplate($GLOBALS['top_include']);
+
+echo '<h3>'.T_('Users management').'</h3>';
+
+echo '<ol id="bookmarks">';
+
+foreach($users as $user) {
+ echo '<li class="xfolkentry">'."\n";
+
+ echo '<div class="link">';
+ echo '<a href="'.createURL('profile', $user->getUsername()).'">'.$user->getUsername().'</a>';
+ echo ' - <span title="'. T_('Public/Shared/Private') .'">'. $user->getNbBookmarks('public') .' / '. $user->getNbBookmarks('shared') .' / '. $user->getNbBookmarks('private') .' '. T_('bookmark(s)') .'</span>';
+ echo '</div>';
+
+ if($user->getUsername() != $currentUser->getUsername()) {
+ echo '<div class="meta">';
+ echo '<a href="'.createURL('admin','delete/'.$user->getUsername()).'" onclick="return confirm(\''.T_('Are you sure?').'\');">'.T_('Delete').'</a>';
+ echo '</div>';
+ }
+
+ echo '</li>'."\n";
+}
+echo '</ol>';
+?>
+<h3><?php echo T_('Other actions')?></h3>
+<p>
+<a href="<?php echo createURL('admin','checkUrl/') ?>"> <?php echo T_('Check all URLs (May take some time)') ?></a>
+</p>
+<?php
+$this->includeTemplate('sidebar.tpl');
+$this->includeTemplate($GLOBALS['bottom_include']);
+
+?>
diff --git a/data/templates/pico/bookmarkcommondescriptionedit.tpl.php b/data/templates/pico/bookmarkcommondescriptionedit.tpl.php
new file mode 100644
index 0000000..306086e
--- /dev/null
+++ b/data/templates/pico/bookmarkcommondescriptionedit.tpl.php
@@ -0,0 +1,63 @@
+<?php
+
+$this->includeTemplate($GLOBALS['top_include']);
+
+list ($url, $hash) = explode('/', $_SERVER['PATH_INFO']);
+
+
+?>
+<script type="text/javascript">
+window.onload = function() {
+ document.getElementById("title").focus();
+}
+</script>
+
+<form action="<?php echo $formaction; ?>" method="post">
+<table title="<?php echo T_('Collaborative description: these fields can be viewed and modified by every users') ?>">
+<tr>
+ <th align="left"><?php echo T_('Title'); ?></th>
+ <td><input type="text" id="title" name="title" size="75" maxlength="255" value="<?php echo $description['cdTitle']; ?>" onkeypress="this.style.backgroundImage = 'none';" /></td>
+ <td></td>
+</tr>
+<tr>
+ <th align="left"><?php echo T_('Description'); ?></th>
+ <td><textarea name="description" cols="75" rows="10"><?php echo $description['cdDescription']; ?></textarea></td>
+</tr>
+<tr>
+ <td></td>
+ <td>
+ <?php
+ if(strlen($description['cdDatetime'])>0) {
+ echo T_('Last modification:').' '.$description['cdDatetime'].', ';
+ $lastUser = $userservice->getUser($description['uId']);
+ if ($lastUser) {
+ echo '<a href="'.createURL('profile', $lastUser['username']).'">'
+ . SemanticScuttle_Model_UserArray::getName($lastUser) . '</a>';
+ }
+ else {
+ echo 'Unknown user';
+ }
+ }
+ ?>
+ </td>
+ <td></td>
+</tr>
+<tr>
+ <td></td>
+ <td>
+ <input type="submit" name="confirm" value="<?php echo T_('Update'); ?>" />
+ <input type="submit" name="cancel" value="<?php echo T_('Cancel'); ?>" />
+ </td>
+ <td></td>
+</tr>
+</table>
+
+<?php if (isset($referrer)): ?>
+<div><input type="hidden" name="referrer" value="<?php echo $referrer; ?>" /></div>
+<?php endif; ?>
+<div><input type="hidden" name="hash" value="<?php echo $hash; ?>" /></div>
+</form>
+
+<?php
+$this->includeTemplate($GLOBALS['bottom_include']);
+?>
diff --git a/data/templates/pico/bookmarklet.inc.php b/data/templates/pico/bookmarklet.inc.php
new file mode 100644
index 0000000..b203735
--- /dev/null
+++ b/data/templates/pico/bookmarklet.inc.php
@@ -0,0 +1,152 @@
+<h3><?php echo T_('Bookmarklet'); ?></h3>
+<p id="bookmarklet"></p>
+<script type="text/javascript">
+//<![CDATA[
+var browser = navigator.appName;
+jQuery(function($) {
+if (browser == "Opera") {
+ $('#bookmarklet').append(
+ <?php echo json_encode(
+ sprintf(
+ T_("Click one of the following bookmarklets to add a button you can click whenever you want to add the page you are on to %s") . ':',
+ $GLOBALS['sitename']
+ )
+ ); ?>
+ );
+} else {
+ $('#bookmarklet').append(
+ <?php echo json_encode(
+ sprintf(
+ T_("Drag one of the following bookmarklets to your browser's bookmarks and click it whenever you want to add the page you are on to %s") . ':',
+ $GLOBALS['sitename']
+ )
+ );
+ ?>
+ );
+}
+});
+//]]>
+</script>
+<script type="text/javascript">
+//<![CDATA[
+var selection = '';
+if (window.getSelection) {
+ selection = 'window.getSelection()';
+} else if (document.getSelection) {
+ selection = 'document.getSelection()';
+} else if (document.selection) {
+ selection = 'document.selection.createRange().text';
+}
+if (browser == "Opera") {
+ $('#bookmarklet').append(
+ '<ul>'
+ + '<li>'
+ + '<a class="bookmarklet" href="'
+ + '<?php
+$popupLink = 'javascript:'
+ . "location.href='"
+ . addProtocolToUrl(createURL('bookmarks', $GLOBALS['user']))
+ . '?action=add'
+ . "&address='+encodeURIComponent(document.location.href)+'"
+ . "&title='+encodeURIComponent(document.title)+'"
+ . "&description='+encodeURIComponent(SELECTION)"
+ . ";";
+$link = 'opera:/button/'
+ //Opera command
+ . 'Go to page'
+ //command parameter 1
+ . ',"' . rawurlencode($popupLink) . '"'
+ //command parameter 2
+ . ','
+ //button title
+ . ',"Post to ' . fixOperaButtonName($GLOBALS['sitename']) . '"'
+ //button icon name
+ . ',"Scuttle"';
+echo jsEscTitle(htmlspecialchars($link));
+?>'.replace('SELECTION', selection)
+ + '"><?php echo jsEscTitle(sprintf(T_('Post to %s'), $GLOBALS['sitename'])); ?></a>'
+ + '</li>'
+ + '<li>'
+ + '<a class="bookmarklet" href="'
+ + '<?php
+$popupLink = 'javascript:'
+ . 'open('
+ . "'" . addProtocolToUrl(createURL('bookmarks', $GLOBALS['user']))
+ . '?action=add'
+ . '&popup=1'
+ . "&address='+encodeURIComponent(document.location.href)+'"
+ . "&title='+encodeURIComponent(document.title)+'"
+ . "&description='+encodeURIComponent(SELECTION)"
+ . ","
+ . "'" . htmlspecialchars(jsEscTitle($GLOBALS['sitename'])) . "',"
+ . "'modal=1,status=0,scrollbars=1,toolbar=0,resizable=1,width=790,height=465"
+ . ",left='+(screen.width-790)/2+',top='+(screen.height-425)/2"
+ . ");void 0";
+$link = 'opera:/button/'
+ . 'Go to page'
+ . ',"' . rawurlencode($popupLink) . '"'
+ . ','
+ . ',"Post to ' . fixOperaButtonName($GLOBALS['sitename']) . ' (Pop-up)"'
+ . ',"Scuttle"';
+echo jsEscTitle(htmlspecialchars($link));
+?>'.replace('SELECTION', selection)
+ + '"><?php echo jsEscTitle(sprintf(T_('Post to %s (Pop-up)'), $GLOBALS['sitename'])); ?></a>'
+ + '</li>'
+ + '</ul>'
+ );
+} else {
+ $('#bookmarklet').append(
+ '<ul>'
+ + '<li><a class="bookmarklet" href="javascript:x=document;a=encodeURIComponent(x.location.href);t=encodeURIComponent(x.title);d=encodeURIComponent('+selection+');location.href=\'<?php echo addProtocolToUrl(createURL('bookmarks', $GLOBALS['user'])); ?>?action=add&amp;address=\'+a+\'&amp;title=\'+t+\'&amp;description=\'+d;void 0;"><?php echo jsEscTitle(sprintf(T_('Post to %s'), $GLOBALS['sitename'])); ?><\/a><\/li>'
+ + '<li>'
+ + '<a class="bookmarklet" href="'
+ + 'javascript:x=document;'
+ + 'a=encodeURIComponent(x.location.href);'
+ + 't=encodeURIComponent(x.title);'
+ + 'd=encodeURIComponent('+selection+');'
+ + 'open('
+ + '\'<?php echo addProtocolToUrl(createURL('bookmarks', $GLOBALS['user'])); ?>?action=add&amp;popup=1&amp;address=\'+a+\'&amp;title=\'+t+\'&amp;description=\'+d,\'<?php echo htmlspecialchars(jsEscTitleDouble($GLOBALS['sitename'])); ?>\',\'modal=1,status=0,scrollbars=1,toolbar=0,resizable=1,width=790,height=465,left=\'+(screen.width-790)/2+\',top=\'+(screen.height-425)/2'
+ + ');void 0;">'
+ + '<?php echo jsEscTitle(sprintf(T_('Post to %s (Pop-up)'), $GLOBALS['sitename'])); ?>'
+ + '</a>'
+ + '</li>'
+ + '</ul>'
+ );
+}
+//]]>
+</script>
+
+
+<script type="text/javascript">
+function activateSocialApi(node) {
+ var baseurl = <?php echo json_encode(addProtocolToUrl(createURL())); ?>;
+ var socialApiData = {
+ // currently required
+ "name": <?php echo json_encode($GLOBALS['sitename']); ?>,
+ "iconURL": baseurl + "themes/default/images/logo.png",
+ "icon32URL": baseurl + "themes/default/images/logo.png",
+ "icon64URL": baseurl + "themes/default/images/logo.png",
+
+ "markURL": "<?php echo addProtocolToUrl(createURL('bookmarks', $GLOBALS['user'])); ?>?action=add&amp;popup=1&amp;width=800&amp;height=470&amp;address=%{url}&amp;title=%{title}&amp;description=%{description}%{text}",
+ "markedIcon": baseurl + "themes/default/images/logo.png",
+ "unmarkedIcon": baseurl + "themes/default/images/logo-empty.png",
+
+ // should be available for display purposes
+ "description": "Self-hosted bookmark manager",
+ "author": "Christian Weiske",
+ "homepageURL": "http://semanticscuttle.sf.net/",
+
+ // optional
+ "version": "0.0.3"
+ };
+
+ var event = new CustomEvent("ActivateSocialFeature");
+ node.setAttribute("data-service", JSON.stringify(socialApiData));
+ node.dispatchEvent(event);
+}
+</script>
+<p>
+ <button onclick="activateSocialApi(this)" title="activate semanticscuttle in firefox">
+ Add SemanticScuttle to Firefox
+ </button>
+</p>
diff --git a/data/templates/pico/bookmarks-thumbnail.inc.tpl.php b/data/templates/pico/bookmarks-thumbnail.inc.tpl.php
new file mode 100644
index 0000000..b8770dc
--- /dev/null
+++ b/data/templates/pico/bookmarks-thumbnail.inc.tpl.php
@@ -0,0 +1,18 @@
+<?php
+/**
+ * Bookmark thumbnail image
+ * Shows the website thumbnail for the bookmark.
+ *
+ * Expects a $row variable with bookmark data.
+ */
+
+$thumbnailer = SemanticScuttle_Service_Factory::get('Thumbnails')->getThumbnailer();
+$imgUrl = $thumbnailer->getThumbnailUrl($address, 120, 90);
+if ($imgUrl !== false) {
+ echo '<a href="' . htmlspecialchars($address) . '">'
+ . '<img class="thumbnail" width="120" height="90" src="'
+ . htmlspecialchars($imgUrl).
+ '" />'
+ . '</a>';
+}
+?> \ No newline at end of file
diff --git a/data/templates/pico/bookmarks-vote-horizontal.inc.tpl.php b/data/templates/pico/bookmarks-vote-horizontal.inc.tpl.php
new file mode 100644
index 0000000..c4a9f8e
--- /dev/null
+++ b/data/templates/pico/bookmarks-vote-horizontal.inc.tpl.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * Bookmark voting badge.
+ * Shows the number of votes and buttons to vote for or
+ * against a bookmark.
+ * Expects a $row variable with bookmark data
+ */
+if (!$GLOBALS['enableVoting'] || $GLOBALS['votingMode'] != 2) {
+ return;
+}
+if (!isset($row['hasVoted'])) {
+ $classes = 'vote-horiz vote-horiz-inactive';
+} else if (isset($row['vote'])) {
+ $classes = 'vote-horiz '
+ . ($row['vote'] == 1
+ ? 'vote-horiz-for'
+ : 'vote-horiz-against'
+ );
+} else {
+ $classes = 'vote-horiz';
+}
+echo '<div class="' . $classes . '" id="bmv-' . $row['bId'] . '">';
+echo sprintf(
+ T_('Voting <span class="voting">%d</span>'), $row['bVoting']
+) . ' ';
+
+if (isset($row['hasVoted'])) {
+ if ($row['vote'] != 1) {
+ echo '<a class="vote-for" rel="nofollow" href="'
+ . createVoteURL(true, $row['bId']) . '"'
+ . ' onclick="javascript:vote(' . $row['bId'] . ',1); return false;"'
+ . '>' . T_('Vote for') . '</a> ';
+ } else {
+ echo '<span class="vote-for-inactive">'
+ . T_('Vote for') . '</span> ';
+ }
+
+
+ if ($row['vote'] != -1) {
+ echo '<a class="vote-against" rel="nofollow" href="'
+ . createVoteURL(false, $row['bId']) . '"'
+ . ' onclick="vote(' . $row['bId'] . ',-1); return false;"'
+ . '>' . T_('Vote against') . '</a>';
+ } else {
+ echo '<span class="vote-against-inactive">'
+ . T_('Vote against') . '</span>';
+ }
+}
+echo '</div>';
+?> \ No newline at end of file
diff --git a/data/templates/pico/bookmarks-vote.inc.tpl.php b/data/templates/pico/bookmarks-vote.inc.tpl.php
new file mode 100644
index 0000000..41572d5
--- /dev/null
+++ b/data/templates/pico/bookmarks-vote.inc.tpl.php
@@ -0,0 +1,44 @@
+<?php
+/**
+ * Bookmark voting badge.
+ * Shows the number of votes and buttons to vote for or
+ * against a bookmark.
+ * Expects a $row variable with bookmark data
+ */
+if (!$GLOBALS['enableVoting'] || $GLOBALS['votingMode'] != 1) {
+ return;
+}
+if (isset($row['hasVoted']) && !$row['hasVoted']) {
+ $classes = 'vote-badge vote-badge-inactive';
+} else if (isset($row['vote'])) {
+ $classes = 'vote-badge '
+ . ($row['vote'] == 1
+ ? 'vote-badge-for'
+ : 'vote-badge-against'
+ );
+} else {
+ $classes = 'vote-badge';
+}
+echo '<span class="' . $classes . '" id="bmv-' . $row['bId'] . '">';
+
+if (isset($row['hasVoted']) && $row['vote'] != 1) {
+ echo '<a class="vote-for" rel="nofollow" href="'
+ . createVoteURL(true, $row['bId']) . '"'
+ . ' onclick="javascript:vote(' . $row['bId'] . ',1); return false;"'
+ . '>+</a>';
+} else {
+ echo '<span class="vote-for vote-for-inactive">+</span>';
+}
+
+echo '<span class="voting">' . $row['bVoting'] . '</span>';
+
+if (isset($row['hasVoted']) && $row['vote'] != -1) {
+ echo '<a class="vote-against" rel="nofollow" href="'
+ . createVoteURL(false, $row['bId']) . '"'
+ . ' onclick="vote(' . $row['bId'] . ',-1); return false;"'
+ . '>-</a>';
+} else {
+ echo '<span class="vote-against vote-against-inactive">-</span>';
+}
+echo '</span>';
+?> \ No newline at end of file
diff --git a/data/templates/pico/bookmarks.tpl.php b/data/templates/pico/bookmarks.tpl.php
new file mode 100644
index 0000000..0ef8a6b
--- /dev/null
+++ b/data/templates/pico/bookmarks.tpl.php
@@ -0,0 +1,444 @@
+<?php
+/**
+ * Show a list of bookmarks.
+ *
+ * SemanticScuttle - your social bookmark manager.
+ *
+ * PHP version 5.
+ *
+ * @category Bookmarking
+ * @package SemanticScuttle
+ * @subcategory Templates
+ * @author Benjamin Huynh-Kim-Bang <mensonge@users.sourceforge.net>
+ * @author Christian Weiske <cweiske@cweiske.de>
+ * @author Eric Dane <ericdane@users.sourceforge.net>
+ * @license GPL http://www.gnu.org/licenses/gpl.html
+ * @link http://sourceforge.net/projects/semanticscuttle
+ */
+
+/* Service creation: only useful services are created */
+$bookmarkservice = SemanticScuttle_Service_Factory::get('Bookmark');
+$tagservice = SemanticScuttle_Service_Factory::get('Tag');
+$cdservice = SemanticScuttle_Service_Factory::get('CommonDescription');
+
+
+$pageName = isset($pageName) ? $pageName : '';
+$user = isset($user) ? $user : '';
+$currenttag = isset($currenttag) ? $currenttag : '';
+
+
+$this->includeTemplate($GLOBALS['top_include']);
+
+include('search.menu.php');
+?>
+
+<?php if($pageName == PAGE_INDEX && $GLOBALS['welcomeMessage']):?>
+<p id="welcome"><?php echo $GLOBALS['welcomeMessage'];?></p>
+<?php endif?>
+
+
+<?php if($GLOBALS['enableAdminColors']!=false && isset($userid) && $userservice->isAdmin($userid) && $pageName != PAGE_WATCHLIST) : ?>
+<div style="width:70%;text-align:center;">
+ <img src="<?php echo $theme->resource('images/logo_24.gif'); ?>" width="12px"/>
+ <?php echo T_('Bookmarks on this page are managed by an admin user.'); ?>
+ <img src="<?php echo $theme->resource('images/logo_24.gif'); ?>" width="12px"/>
+</div>
+<?php endif?>
+
+
+<?php
+// common tag description
+if(($currenttag!= '' && $GLOBALS['enableCommonTagDescription'])
+|| (isset($hash) && $GLOBALS['enableCommonBookmarkDescription'])):?>
+
+
+<p class="commondescription"><?php
+$cDescription = '';
+if($currenttag!= '' && $cdservice->getLastTagDescription($currenttag)) {
+ $cDescription = $cdservice->getLastTagDescription($currenttag);
+ echo nl2br(filter($cDescription['cdDescription']));
+} elseif(isset($hash) && $cdservice->getLastBookmarkDescription($hash)) {
+ $cDescription = $cdservice->getLastBookmarkDescription($hash);
+ echo nl2br(filter($cDescription['cdTitle'])). "<br/>";
+ echo nl2br(filter($cDescription['cdDescription'])). "<br/>";
+}
+
+//common tag description edit
+if ($userservice->isLoggedOn()) {
+ if ($currenttag != ''
+ && ($GLOBALS['enableCommonTagDescriptionEditedByAll']
+ || $currentUser->isAdmin()
+ )
+ ) {
+ echo ' <a href="'. createURL('tagcommondescriptionedit', $currenttag).'" title="'.T_('Edit the common description of this tag').'">';
+ echo !is_array($cDescription) || strlen($cDescription['cdDescription'])==0?T_('Edit the common description of this tag'):'';
+ echo ' <img src="' . $theme->resource('images/b_edit.png') . '" /></a>';
+ } else if (isset($hash)) {
+ echo ' (<a href="'.createURL('bookmarkcommondescriptionedit', $hash).'" title="'.T_('Edit the common description of this bookmark').'">';
+ echo T_('Edit the common description of this bookmark').'</a>)';
+ }
+}
+?></p>
+<?php endif ?>
+
+
+<?php
+/* personal tag description */
+if($currenttag!= '' && $user!='') {
+ $userObject = $userservice->getUserByUsername($user);
+ if($userObject && $tagservice->getDescription($currenttag, $userObject['uId'])) { ?>
+
+<p class="commondescription"><?php
+$pDescription = $tagservice->getDescription($currenttag, $userObject['uId']);
+echo nl2br(filter($pDescription['tDescription']));
+
+//personal tag description edit
+if($userservice->isLoggedOn()) {
+ if($currenttag!= '') {
+ echo ' <a href="'. createURL('tagedit', $currenttag).'" title="'.T_('Edit your personal description of this tag').'" >';
+ echo strlen($pDescription['tDescription'])==0?T_('Edit your personal description of this tag'):'';
+ echo ' <img src="' . $theme->resource('images/b_edit.png') . '" /></a>';
+ }
+}
+?></p>
+
+<?php
+ }
+}
+?>
+
+<?php if (isset($bookmarks) && count($bookmarks) > 0) { ?>
+<script type="text/javascript">
+window.onload = playerLoad;
+</script>
+
+<p id="sort"><?php echo $total.' '.T_("bookmark(s)"); ?> - <?php echo T_("Sort by:"); ?>
+ <?php
+$titleArrow = '';
+$dateArrow = '';
+$votingArrow = '';
+$dateSort = 'date_desc';
+$titleSort = 'title_asc';
+$votingSort = 'voting_desc';
+
+switch(getSortOrder()) {
+case 'date_asc':
+ $dateArrow = ' ↑';
+ $dateSort = 'date_desc';
+ break;
+
+case 'title_asc':
+ $titleArrow = ' ↑';
+ $titleSort = 'title_desc';
+ break;
+
+case 'title_desc':
+ $titleArrow = ' ↓';
+ $titleSort = 'title_asc';
+ break;
+
+case 'voting_asc':
+ $votingArrow = ' ↑';
+ $votingSort = 'voting_desc';
+ break;
+
+case 'voting_desc':
+ $votingArrow = ' ↓';
+ $votingSort = 'voting_asc';
+ break;
+
+case 'date_desc':
+default:
+ $dateArrow = ' ↓';
+ $dateSort = 'date_asc';
+ break;
+}
+?>
+ <a href="?sort=<?php echo $dateSort ?>"><?php echo T_("Date").$dateArrow; ?></a>
+ <span>/</span>
+ <a href="?sort=<?php echo $titleSort ?>"><?php echo T_("Title").$titleArrow; ?></a>
+ <span>/</span>
+<?php if ($GLOBALS['enableVoting']) { ?>
+ <a href="?sort=<?php echo $votingSort ?>"><?php echo T_("Voting").$votingArrow; ?></a>
+ <span>/</span>
+<?php } ?>
+
+<?php
+if ($currenttag!= '') {
+ if ($user!= '') {
+ echo ' - ';
+ echo '<a href="'. createURL('tags', $currenttag) .'">';
+ echo T_('Bookmarks from other users for this tag').'</a>';
+ //echo T_(' for these tags');
+ } else if ($userservice->isLoggedOn()){
+ echo ' - ';
+ echo '<a href="'. createURL('bookmarks', $currentUser->getUsername().'/'.$currenttag) .'">';
+ echo T_('Only your bookmarks for this tag').'</a>';
+ //echo T_(' for these tags');
+ }
+}
+?></p>
+
+<?php
+ // PAGINATION
+
+ // Ordering
+ $sortOrder = '';
+ if (GET_SORT != '') {
+ $sortOrder = 'sort=' . getSortOrder();
+ }
+
+ $sortAmp = (($sortOrder) ? '&amp;'. $sortOrder : '');
+ $sortQue = (($sortOrder) ? '?'. $sortOrder : '');
+
+ // Previous
+ $perpage = getPerPageCount($currentUser);
+ if (!$page || $page < 2) {
+ $page = 1;
+ $start = 0;
+ $bfirst = '<span class="disable">'. T_('First') .'</span>';
+ $bprev = '<span class="disable">'. T_('Previous') .'</span>';
+ } else {
+ $prev = $page - 1;
+ $prev = 'page='. $prev;
+ $start = ($page - 1) * $perpage;
+ $bfirst= '<a href="'. sprintf($nav_url, $user, $currenttag, '') . $sortQue .'">'. T_('First') .'</a>';
+ $bprev = '<a href="'. sprintf($nav_url, $user, $currenttag, '?') . $prev . $sortAmp .'">'. T_('Previous') .'</a>';
+ }
+
+ // Next
+ $next = $page + 1;
+ $totalpages = ceil($total / $perpage);
+ if (count($bookmarks) < $perpage || $perpage * $page == $total) {
+ $bnext = '<span class="disable">'. T_('Next') .'</span>';
+ $blast = '<span class="disable">'. T_('Last') ."</span>\n";
+ } else {
+ $bnext = '<a href="'. sprintf($nav_url, $user, $currenttag, '?page=') . $next . $sortAmp .'">'. T_('Next') .'</a>';
+ $blast = '<a href="'. sprintf($nav_url, $user, $currenttag, '?page=') . $totalpages . $sortAmp .'">'. T_('Last') ."</a>\n";
+ }
+
+ // RSS
+ $brss = '';
+ $size = count($rsschannels);
+ for ($i = 0; $i < $size; $i++) {
+ $brss = '<a style="background:#FFFFFF"'
+ . ' href="'. htmlspecialchars($rsschannels[$i][1]) . '"'
+ . ' title="' . htmlspecialchars($rsschannels[$i][0]) . '">'
+ . '<img src="' . $theme->resource('images/rss.gif') . '"'
+ . ' width="16" height="16"'
+ . ' alt="' . htmlspecialchars($rsschannels[$i][0]) .'"/>'
+ . '</a>';
+ }
+
+ $pagesBanner = '<p class="paging">'. $bfirst .'<span> / </span>'. $bprev .'<span> / </span>'. $bnext .'<span> / </span>'. $blast .'<span> / </span>'. sprintf(T_('Page %d of %d'), $page, $totalpages) ." ". $brss ." </p>\n";
+
+ if (getPerPageCount($currentUser) > 10) {
+ echo $pagesBanner; // display a page banner if too many bookmarks to manage
+ }
+
+
+?>
+
+<?php
+ $addresses = array();
+ foreach ($bookmarks as $key => &$row) {
+ $addresses[$row['bId']] = $row['bAddress'];
+ }
+ $otherCounts = $bookmarkservice->countOthers($addresses);
+ if ($userservice->isLoggedOn()) {
+ $existence = $bookmarkservice->bookmarksExist(
+ $addresses, $currentUser->getId()
+ );
+ }
+
+ if ($userservice->isLoggedOn()) {
+ $watchedNames = $userservice->getWatchNames(
+ $currentUser->getId(), true
+ );
+ } else {
+ $watchedNames = null;
+ }
+
+ foreach ($bookmarks as $key => &$row) {
+ switch ($row['bStatus']) {
+ case 0:
+ $access = '';
+ break;
+ case 1:
+ $access = ' shared';
+ break;
+ case 2:
+ $access = ' private';
+ break;
+ }
+
+ $cats = '';
+ $tagsForCopy = '';
+ $tags = $row['tags'];
+ foreach ($tags as $tkey => &$tag) {
+ $tagcaturl = sprintf(
+ $cat_url,
+ filter($row['username'], 'url'),
+ filter($tag, 'url')
+ );
+ $cats .= sprintf(
+ '<a href="%s" rel="tag">%s</a>, ',
+ $tagcaturl, filter($tag)
+ );
+ $tagsForCopy .= $tag . ',';
+ }
+ $cats = substr($cats, 0, -2);
+ if ($cats != '') {
+ $cats = T_('Tags:') . ' ' . $cats;
+ }
+
+ // Edit and delete links
+ $edit = '';
+ if ($bookmarkservice->editAllowed($row)) {
+ $edit = ' - <a href="' . createURL('edit', $row['bId']) . '">'
+ . T_('Edit')
+ . '</a>'
+ . ' <a href="#" onclick="deleteBookmark(this, '. $row['bId'] .'); return false;">'
+ . T_('Delete')
+ .'</a>';
+ }
+
+ // Last update
+ $update = ' <small title="'. T_('Last update') .'">('. date($GLOBALS['shortdate'], strtotime($row['bModified'])). ') </small>';
+
+ // User attribution
+ $copy = ' ' . T_('by') . ' ';
+ if ($userservice->isLoggedOn()
+ && $currentUser->getUsername() == $row['username']
+ ) {
+ $copy .= T_('you');
+ } else {
+ $copy .= '<a href="' . createURL('bookmarks', $row['username']) . '">'
+ . SemanticScuttle_Model_UserArray::getName($row)
+ . '</a>';
+ }
+
+ // others
+ if (!isset($hash)) {
+ $others = $otherCounts[$row['bAddress']];
+ $ostart = '<a href="' . createURL('history', $row['bHash']) . '">';
+ $oend = '</a>';
+ switch ($others) {
+ case 0:
+ break;
+ case 1:
+ $copy .= sprintf(T_(' and %s1 other%s'), $ostart, $oend);
+ break;
+ default:
+ $copy .= sprintf(T_(' and %2$s%1$s others%3$s'), $others, $ostart, $oend);
+ }
+ }
+
+ // Copy link
+ if ($userservice->isLoggedOn()
+ && ($currentUser->getId() != $row['uId'])
+ && !$existence[$row['bAddress']]
+ ) {
+ $copy .= ' - <a href="'
+ . createURL(
+ 'bookmarks',
+ $currentUser->getUsername()
+ . '?action=add&amp;copyOf=' . $row['bId'])
+ . '" title="'.T_('Copy this bookmark to YOUR bookmarks.').'">'
+ . T_('Copy')
+ . '</a>';
+ }
+
+ // Nofollow option
+ $rel = '';
+ if ($GLOBALS['nofollow']) {
+ $rel = ' rel="nofollow"';
+ }
+
+ $address = $row['bAddress'];
+ $oaddress = $address;
+ // Redirection option
+ if ($GLOBALS['useredir']) {
+ $address = $GLOBALS['url_redir'] . $address;
+ }
+
+ // Admin specific design
+ if ($userservice->isAdmin($row['username'])
+ && $GLOBALS['enableAdminColors']
+ ) {
+ $adminStar = ' <img'
+ . ' src="' . $theme->resource('images/logo_24.gif') . '"'
+ . ' width="12px"'
+ . ' title="' . T_('This bookmark is certified by an admin user.') . '"'
+ . '/>';
+ } else {
+ $adminStar = '';
+ }
+
+ // Private Note (just visible by the owner and his/her contacts)
+ if ($watchedNames !== null
+ && ($currentUser->getId() == $row['uId']
+ || in_array($row['username'], $watchedNames)
+ )
+ ) {
+ $privateNoteField = $row['bPrivateNote'];
+ } else {
+ $privateNoteField = '';
+ }
+
+ if ($GLOBALS['enableVoting'] && $GLOBALS['hideBelowVoting'] !== null
+ && $row['bVoting'] < $GLOBALS['hideBelowVoting']
+ ) {
+ $access .= ' below-threshold';
+ }
+
+ // Output
+ echo ' <article>'."\n";
+ include 'bookmarks-thumbnail.inc.tpl.php';
+ include 'bookmarks-vote.inc.tpl.php';
+
+ echo ' <header>'
+ . '<a href="'. htmlspecialchars($address) .'"'. $rel .' class="taggedlink">'
+ . filter($row['bTitle'])
+ . '</a>' . $adminStar . "</header>\n";
+ if ($row['bDescription'] == '') {
+ $bkDescription = $GLOBALS['blankDescription'];
+ } else {
+ // Improve description display (anchors, links, ...)
+ $bkDescription = preg_replace('|\[\/.*?\]|', '', filter($row['bDescription'])); // remove final anchor
+ $bkDescription = preg_replace('|\[(.*?)\]|', ' <span class="anchorBookmark">$1</span> » ', $bkDescription); // highlight starting anchor
+ $bkDescription = preg_replace('@((http|https|ftp)://.*?)( |\r|$)@', '<a href="$1" rel="nofollow">$1</a>$3', $bkDescription); // make url clickable
+
+ }
+ echo ' <div class="description">'. nl2br($bkDescription) ."</div>\n";
+
+ echo ' <footer>'
+ . ' <div class="address">' . htmlspecialchars(shortenString($oaddress)) . "</div>\n"
+ . $cats . "\n"
+ . $copy . "\n"
+ . $edit . "\n"
+ . $update . "\n"
+ . " </footer>\n";
+ echo $privateNoteField != ''
+ ? ' <div class="privateNote" title="'. T_('Private Note on this bookmark') .'">'.$privateNoteField."</div>\n"
+ : '';
+ echo ' ';
+ include 'bookmarks-vote-horizontal.inc.tpl.php';
+
+ echo " </article>\n";
+ }
+ ?>
+
+ <?php
+ if(getPerPageCount($currentUser)>7) {
+ echo '<p class="backToTop"><a href="#header" title="'.T_('Come back to the top of this page.').'">'.T_('Top of the page').'</a></p>';
+ }
+ echo $pagesBanner; // display previous and next links pages + RSS link
+
+
+} else {
+ echo '<p class="error">'.T_('No bookmarks available').'</p>';
+}
+$this->includeTemplate('sidebar.tpl');
+$this->includeTemplate($GLOBALS['bottom_include']);
+?>
diff --git a/data/templates/pico/bottom.inc.php b/data/templates/pico/bottom.inc.php
new file mode 100644
index 0000000..44e0dbc
--- /dev/null
+++ b/data/templates/pico/bottom.inc.php
@@ -0,0 +1,30 @@
+<!--following code is generated by templates/bottom.inc.php-->
+<div id="bottom">
+<?php echo $GLOBALS['footerMessage'].' ';?>
+<?php
+echo '<a href="'.createURL('about').'">'.T_('About').'</a>';
+echo ' - ';
+echo T_("Propulsed by ");
+echo " <a href=\"https://sourceforge.net/projects/semanticscuttle/\">SemanticScuttle</a>";
+?>
+
+</div>
+
+
+<?php if(isset($GLOBALS['googleAnalyticsCode']) && $GLOBALS['googleAnalyticsCode']!= ''):?>
+
+<script type="text/javascript">
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script>
+<script type="text/javascript">
+try {
+var pageTracker = _gat._getTracker("<?php echo $GLOBALS['googleAnalyticsCode']?>");
+pageTracker._trackPageview();
+} catch(err) {}</script>
+
+<?php endif;?>
+
+ </main>
+</body>
+</html>
diff --git a/data/templates/pico/dynamictags.inc.php b/data/templates/pico/dynamictags.inc.php
new file mode 100644
index 0000000..f731048
--- /dev/null
+++ b/data/templates/pico/dynamictags.inc.php
@@ -0,0 +1,148 @@
+<?php
+/***************************************************************************
+ Copyright (C) 2005 - 2006 Scuttle project
+ http://sourceforge.net/projects/scuttle/
+ http://scuttle.org/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ ***************************************************************************/
+
+/* Service creation: only useful services are created */
+$b2tservice = SemanticScuttle_Service_Factory :: get('Bookmark2Tag');
+
+$logged_on_userid = $userservice->getCurrentUserId();
+
+//tags from current user
+$userPopularTags = $b2tservice->getPopularTags($logged_on_userid, 25, $logged_on_userid);
+$userPopularTagsCloud = $b2tservice->tagCloud($userPopularTags, 5, 90, 175);
+$userPopularTagsCount = count($userPopularTags);
+
+//tags from all users
+$allPopularTags = $b2tservice->getPopularTags(null, 5, $logged_on_userid);
+$allPopularTagsCloud = $b2tservice->tagCloud($allPopularTags, 5, 90, 175);
+$allPopularTagsCount = count($allPopularTags);
+
+
+// function printing the cloud
+function writeTagsProposition($tagsCloud, $title)
+{
+ static $id = 0;
+ ++$id;
+
+ echo <<<JS
+ $('.edit-tagclouds')
+ .append(
+'<div class="collapsible" id="edit-tagcloud-$id">'
++ ' <h3>$title</h3>'
++ ' <p class="popularTags tags"></p>'
++ '</div>');
+JS;
+
+ $taglist = '';
+ foreach (array_keys($tagsCloud) as $key) {
+ $row = $tagsCloud[$key];
+ $entries = T_ngettext('bookmark', 'bookmarks', (int)$row['bCount']);
+ $taglist .= '<span'
+ . ' title="'. $row['bCount'] . ' ' . $entries . '"'
+ . ' style="font-size:' . $row['size'] . '"'
+ . ' onclick="addTag(this)">'
+ . filter($row['tag'])
+ . '</span> ';
+ }
+ echo '$(\'#edit-tagcloud-' . $id . ' p\').append('
+ . json_encode($taglist)
+ . ");\n";
+}
+
+
+if ($allPopularTagsCount > 0 || $userPopularTagsCount > 0 ) { ?>
+<script type="text/javascript">
+//<![CDATA[
+Array.prototype.contains = function (ele) {
+ for (var i = 0; i < this.length; i++) {
+ if (this[i] == ele) {
+ return true;
+ }
+ }
+ return false;
+};
+
+Array.prototype.remove = function (ele) {
+ var arr = new Array();
+ var count = 0;
+ for (var i = 0; i < this.length; i++) {
+ if (this[i] != ele) {
+ arr[count] = this[i];
+ count++;
+ }
+ }
+ return arr;
+};
+
+function addonload(addition) {
+ //var existing = window.onload;
+ window.onload = function () {
+ //existing();
+ addition();
+ }
+}
+
+jQuery(function($) {
+<?php
+if ($userPopularTagsCount > 0) {
+ writeTagsProposition($userPopularTagsCloud, T_('Popular Tags'));
+}
+if ($allPopularTagsCount > 0) {
+ writeTagsProposition($allPopularTagsCloud, T_('Popular Tags From All Users'));
+}
+?>
+ var taglist = $('#tags');
+ var tags = taglist.val().split(', ');
+
+ var populartags = $('.edit-tagclouds span');
+
+ for (var i = 0; i < populartags.length; i++) {
+ if (tags.contains(populartags[i].innerHTML)) {
+ populartags[i].className = 'selected';
+ }
+ }
+});
+
+function addTag(ele) {
+ var thisTag = ele.innerHTML;
+ var taglist = document.getElementById('tags');
+ var tags = taglist.value.split(', ');
+
+ // If tag is already listed, remove it
+ if (tags.contains(thisTag)) {
+ tags = tags.remove(thisTag);
+ ele.className = 'unselected';
+
+ // Otherwise add it
+ } else {
+ tags.splice(0, 0, thisTag);
+ ele.className = 'selected';
+ }
+
+ taglist.value = tags.join(', ');
+
+ document.getElementById('tags').focus();
+}
+//]]>
+</script>
+<div class="edit-tagclouds"></div>
+<?php
+}
+?>
diff --git a/data/templates/pico/editbookmark.tpl.php b/data/templates/pico/editbookmark.tpl.php
new file mode 100644
index 0000000..8b71230
--- /dev/null
+++ b/data/templates/pico/editbookmark.tpl.php
@@ -0,0 +1,221 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+
+$accessPublic = '';
+$accessShared = '';
+$accessPrivate = '';
+switch ($row['bStatus']) {
+ case 0 :
+ $accessPublic = ' selected="selected"';
+ break;
+ case 1 :
+ $accessShared = ' selected="selected"';
+ break;
+ case 2 :
+ $accessPrivate = ' selected="selected"';
+ break;
+}
+
+function jsEscTitle($title)
+{
+ return addcslashes($title, "'");
+}
+function jsEscTitleDouble($title)
+{
+ return addcslashes(addcslashes($title, "'"), "'\\");
+}
+function fixOperaButtonName($name) {
+ //yes, opera has problems with double quotes in button names
+ return str_replace('"', "''", $name);
+}
+
+if (is_array($row['tags'])) {
+ $row['tags'] = implode(', ', $row['tags']);
+}
+
+$ajaxUrl = ROOT . 'ajax/'
+ . (
+ ($GLOBALS['adminsAreAdvisedTagsFromOtherAdmins'] && $currentUser->isAdmin())
+ ? 'getadmintags'
+ : 'getcontacttags'
+ ) . '.php';
+?>
+<form action="<?php echo $formaction; ?>" method="post">
+<table>
+<tr>
+ <th align="left"><?php echo T_('Address'); ?></th>
+ <td><input type="text" id="address" name="address" size="75" maxlength="65535" value="<?php echo filter($row['bAddress'], 'xml'); ?>" onblur="useAddress(this)" /></td>
+ <td>← <?php echo T_('Required'); ?></td>
+</tr>
+<tr>
+ <th align="left"><?php echo T_('Title'); ?></th>
+ <td><input type="text" id="titleField" name="title" size="75" maxlength="255" value="<?php echo filter($row['bTitle'], 'xml'); ?>" onkeypress="this.style.backgroundImage = 'none';" /></td>
+ <td>← <?php echo T_('Required'); ?></td>
+</tr>
+<tr>
+ <th align="left">
+ <?php echo T_('Description'); ?>
+ <a onclick="var nz = document.getElementById('privateNoteZone'); nz.style.display='';this.style.display='none';"><?php echo T_("Add Note"); ?></a>
+ </th>
+ <td><textarea name="description" id="description" rows="5" cols="63" ><?php echo filter($row['bDescription'], 'xml'); ?></textarea></td>
+ <td>← <?php echo T_('You can use anchors to delimite attributes. for example: [publisher]blah[/publisher] '); ?>
+ <?php if(count($GLOBALS['descriptionAnchors'])>0): ?>
+ <br /><br />
+ <?php echo T_('Suggested anchors: '); ?>
+ <?php foreach($GLOBALS['descriptionAnchors'] as $anchorName => $anchorValue): ?>
+ <?php if(is_numeric($anchorName)) {
+ $anchorName = $anchorValue;
+ $anchorValue = '['.$anchorValue.']'.'[/'.$anchorValue.']';
+ } ?>
+ <span class="anchor" title="<?php echo $anchorValue ?>" onclick="addAnchor('<?php echo $anchorValue ?>', 'description')"><?php echo $anchorName ?></span>
+ <?php endforeach; ?>
+ <?php endif; ?>
+ </td>
+</tr>
+<tr id="privateNoteZone" <?php if(strlen($row['bPrivateNote'])==0):?>style="display:none"<?php endif; ?>>
+ <th align="left"><?php echo T_('Private Note'); ?></th>
+ <td><textarea name="privateNote" id="privateNote" rows="1" cols="63" ><?php echo filter($row['bPrivateNote'], 'xml'); ?></textarea></td>
+ <td>← <?php echo T_('Just visible by you and your contacts.'); ?>
+ </td>
+</tr>
+<tr>
+ <th align="left"><?php echo T_('Tags'); ?></th>
+ <td class="scuttletheme">
+ <input type="text" id="tags" name="tags" size="75" value="<?php echo filter($row['tags'], 'xml'); ?>"/>
+ </td>
+ <td>← <?php echo T_('Comma-separated'); ?></td>
+</tr>
+<tr>
+ <th></th>
+ <td align="right"><small><?php echo htmlspecialchars(T_('Note: use ">" to include one tag in another. e.g.: europe>france>paris'))?></small></td>
+</tr>
+<tr>
+ <th></th>
+ <td align="right"><small><?php echo T_('Note: use "=" to make synonym two tags. e.g.: france=frenchcountry')?></small></td>
+</tr>
+<tr>
+ <th align="left"><?php echo T_('Privacy'); ?></th>
+ <td>
+ <select name="status">
+ <option value="0"<?php echo $accessPublic ?>><?php echo T_('Public'); ?></option>
+ <option value="1"<?php echo $accessShared ?>><?php echo T_('Shared with Watch List'); ?></option>
+ <option value="2"<?php echo $accessPrivate ?>><?php echo T_('Private'); ?></option>
+ </select>
+ </td>
+ <td></td>
+</tr>
+<tr>
+ <td></td>
+ <td>
+ <input type="submit" name="submitted" value="<?php echo $btnsubmit; ?>" />
+ <input type="button" name="cancel" value="<?php echo T_('Cancel') ?>" onclick="<?php echo $popup?'window.close();':'javascript: history.go(-1)'; ?>" />
+ <?php
+ if (isset($showdelete) && $showdelete) {
+ ?>
+ <input type="submit" name="delete" value="<?php echo T_('Delete Bookmark'); ?>" />
+ <?php
+ }
+ if (isset($showdelete) && $showdelete) {
+ echo ' (<a href="'.createURL('bookmarkcommondescriptionedit', $row['bHash']).'">';
+ echo T_('edit common description').'</a>)';
+ }
+
+ if ($popup) {
+ ?>
+ <input type="hidden" name="popup" value="1" />
+ <?php
+ } elseif (isset($referrer)) {
+ ?>
+ <input type="hidden" name="referrer" value="<?php echo $referrer; ?>" />
+ <?php
+ }
+ ?>
+ </td>
+ <td></td>
+ </tr>
+ </table>
+</form>
+
+<link href="<?php echo ROOT ?>js/jquery-ui-1.8.11/themes/base/jquery.ui.all.css" rel="stylesheet" type="text/css"/>
+
+<script type="text/javascript" src="<?php echo ROOT ?>js/jquery-ui-1.8.11/jquery.ui.core.js"></script>
+<script type="text/javascript" src="<?php echo ROOT ?>js/jquery-ui-1.8.11/jquery.ui.widget.js"></script>
+<script type="text/javascript" src="<?php echo ROOT ?>js/jquery-ui-1.8.11/jquery.ui.position.js"></script>
+<script type="text/javascript" src="<?php echo ROOT ?>js/jquery-ui-1.8.11/jquery.ui.autocomplete.js"></script>
+<script type="text/javascript">
+//<![CDATA[
+jQuery(document).ready(function() {
+ function split(val)
+ {
+ return val.split(/[,=><]\s*/);
+ }
+
+ function extractLast(term)
+ {
+ return split(term).pop();
+ }
+ //var availableTags = ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"];
+
+ jQuery("input#tags").autocomplete({
+ autoFocus: true,
+ minLength: 1,
+
+ source: function(request, response) {
+ // delegate back to autocomplete, but extract the last term
+ var term = extractLast(request.term);
+ if (term.length < this.options.minLength) {
+ return;
+ }
+ response(
+ /*
+ $.ui.autocomplete.filter(
+ availableTags, extractLast(request.term)
+ )
+ */
+ $.getJSON(
+ "<?php echo $ajaxUrl; ?>",
+ { beginsWith: term },
+ response
+ )
+ );
+ },
+
+ focus: function() {
+ // prevent value inserted on focus
+ return false;
+ },
+ select: function(event, ui) {
+ var terms = split(this.value);
+ // remove the current input
+ terms.pop();
+ // add the selected item
+ terms.push(ui.item.value);
+ // add placeholder to get the comma-and-space at the end
+ terms.push("");
+ this.value = terms.join(", ");
+ return false;
+ }
+ });
+});
+//]]>
+</script>
+
+<?php
+// Dynamic tag selection
+$this->includeTemplate('dynamictags.inc');
+
+// Bookmarklets and import links
+if (empty($_REQUEST['popup']) && (!isset($showdelete) || !$showdelete)) {
+
+$this->includeTemplate('bookmarklet.inc.php');
+?>
+<h3><?php echo T_('Import'); ?></h3>
+<ul>
+ <li><a href="<?php echo createURL('importNetscape'); ?>"><?php echo T_('Import bookmarks from bookmark file'); ?></a> (<?php echo T_('Internet Explorer, Mozilla Firefox and Netscape'); ?>)</li>
+ <li><a href="<?php echo createURL('import'); ?>"><?php echo T_('Import bookmarks from del.icio.us'); ?></a></li>
+</ul>
+
+<?php
+}
+$this->includeTemplate($GLOBALS['bottom_include']);
+?>
diff --git a/data/templates/pico/editprofile-sslclientcerts.tpl.php b/data/templates/pico/editprofile-sslclientcerts.tpl.php
new file mode 100644
index 0000000..900c193
--- /dev/null
+++ b/data/templates/pico/editprofile-sslclientcerts.tpl.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * User's own profile page: SSL client certificate settings
+ *
+ * @param array $sslClientCerts Array of SSL client certificate objects
+ * @param string $formaction URL where to send the forms to
+ * @param SemanticScuttle_Model_User_SslClientCert
+ * $currentCert Current SSL client certificate (may be null)
+ */
+?>
+<h3><?php echo T_('SSL client certificates'); ?></h3>
+<?php if (count($sslClientCerts)) { ?>
+<table>
+ <thead>
+ <tr>
+ <th>Options</th>
+ <th><?php echo T_('Serial'); ?></th>
+ <th><?php echo T_('Name'); ?></th>
+ <th><?php echo T_('Email'); ?></th>
+ <th><?php echo T_('Issuer'); ?></th>
+ </tr>
+ </thead>
+ <tbody>
+ <?php foreach($sslClientCerts as $cert) { ?>
+ <tr <?php if ($cert->isCurrent()) { echo 'class="ssl-current"'; } ?>>
+ <td>
+ <form method="post" action="<?php echo $formaction; ?>">
+ <input type="hidden" name="certId" value="<?php echo $cert->id; ?>"/>
+ <button type="submit" name="action" value="deleteClientCert">
+ <?php echo T_('delete'); ?>
+ </button>
+ </form>
+ </td>
+ <td><?php echo htmlspecialchars($cert->sslSerial); ?></td>
+ <td><?php echo htmlspecialchars($cert->sslName); ?></td>
+ <td><?php echo htmlspecialchars($cert->sslEmail); ?></td>
+ <td><?php echo htmlspecialchars($cert->sslClientIssuerDn); ?></td>
+ </tr>
+ <?php } ?>
+ </tbody>
+</table>
+<?php } else { ?>
+ <p><?php echo T_('No certificates registered'); ?></p>
+<?php } ?>
+
+<?php if ($currentCert) { ?>
+ <?php if ($currentCert->isRegistered($sslClientCerts)) { ?>
+ <p><?php echo T_('Your current certificate is already registered with your account.'); ?></p>
+ <?php } else { ?>
+ <p>
+ <form method="post" action="<?php echo $formaction; ?>">
+ <button type="submit" name="action" value="registerCurrentCert">
+ <?php echo T_('Register current certificate to automatically login.'); ?>
+ </button>
+ </form>
+ </p>
+ <?php } ?>
+<?php } else { ?>
+ <p><?php echo T_('Your browser does not provide a certificate.'); ?></p>
+<?php } ?>
diff --git a/data/templates/pico/editprofile.tpl.php b/data/templates/pico/editprofile.tpl.php
new file mode 100644
index 0000000..25dc3a4
--- /dev/null
+++ b/data/templates/pico/editprofile.tpl.php
@@ -0,0 +1,81 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+?>
+
+<form action="<?php echo $formaction; ?>" method="post">
+<input type="hidden" name="token" value="<?php echo $token; ?>"/>
+
+<h3><?php echo T_('Account Details'); ?></h3>
+
+<table class="profile">
+<tr>
+ <th align="left"><?php echo T_('Username'); ?></th>
+ <td><?php echo $user; ?></td>
+ <td></td>
+</tr>
+<tr>
+ <th align="left"><?php echo T_('New Password'); ?></th>
+ <td><input type="password" name="pPass" size="20" /></td>
+ <td></td>
+</tr>
+<tr>
+ <th align="left"><?php echo T_('Confirm Password'); ?></th>
+ <td><input type="password" name="pPassConf" size="20" /></td>
+ <td></td>
+</tr>
+<tr>
+ <th align="left"><?php echo T_('E-mail'); ?></th>
+ <td><input type="text" name="pMail" size="75" value="<?php echo filter($objectUser->getEmail(), 'xml'); ?>" /></td>
+ <td>← <?php echo T_('Required'); ?></td>
+</tr>
+<tr>
+ <th align="left"><?php echo T_('Private RSS Feed'); ?></th>
+ <td><input type="checkbox" id="pEnablePrivateKey" name="pEnablePrivateKey" value="true" <?php echo $privateKeyIsEnabled;?> />
+ <label for="pEnablePrivateKey"><?php echo T_('Enable'); ?></label>&nbsp;&nbsp;&nbsp;
+ <input type="text" id="pPrivateKey" name="pPrivateKey" size="40" value="<?php echo $privateKey;?>" readonly="readonly" />
+ <a onclick="getNewPrivateKey(this); return false;"><button type="submit" name="submittedPK" value="1"><?php echo T_('Generate New Key'); ?></button></a>
+ </td>
+</tr>
+</table>
+
+<h3><?php echo T_('Personal Details'); ?></h3>
+
+<table class="profile">
+<tr>
+ <th align="left"><?php echo T_('Name'); ?></th>
+ <td><input type="text" name="pName" size="75" value="<?php echo filter($objectUser->getName(), 'xml'); ?>" /></td>
+</tr>
+<tr>
+ <th align="left"><?php echo T_('Homepage'); ?></th>
+ <td><input type="text" name="pPage" size="75" value="<?php echo filter($objectUser->getHomepage()); ?>" /></td>
+</tr>
+<tr>
+ <th align="left"><?php echo T_('Description'); ?></th>
+ <td><textarea name="pDesc" cols="75" rows="10"><?php echo $objectUser->getContent(); ?></textarea></td>
+</tr>
+<tr>
+ <th></th>
+ <td><input type="submit" name="submitted" value="<?php echo T_('Save Changes'); ?>" /></td>
+</tr>
+</table>
+
+<?php include 'editprofile-sslclientcerts.tpl.php'; ?>
+<h3><?php echo T_('Actions'); ?></h3>
+<table class="profile">
+<tr>
+ <th align="left"><?php echo T_('Export bookmarks'); ?></th>
+ <td>
+ <a href="../api/export_html.php"><?php echo T_('HTML file (for browsers)')?></a> /
+ <a href="../api/posts_all.php"><?php echo T_('XML file (like del.icio.us)')?></a> /
+ <a href="../api/export_csv.php"><?php echo T_('CSV file (for spreadsheet tools)')?></a>
+ </td>
+</tr>
+<tr><th> </th><td> </td></tr>
+<tr><th> </th><td> </td></tr>
+</table>
+
+</form>
+
+<?php
+$this->includeTemplate($GLOBALS['bottom_include']);
+?>
diff --git a/data/templates/pico/error.404.tpl.php b/data/templates/pico/error.404.tpl.php
new file mode 100644
index 0000000..fe9401d
--- /dev/null
+++ b/data/templates/pico/error.404.tpl.php
@@ -0,0 +1,9 @@
+<?php
+header('HTTP/1.x 404 Not Found');
+$this->includeTemplate($GLOBALS['top_include']);
+if (!$error) {
+ echo '<h1>'. T_('Not Found') .'</h1>';
+ echo '<p>'. T_('The requested URL was not found on this server') .'</p>';
+}
+$this->includeTemplate($GLOBALS['bottom_include']);
+?> \ No newline at end of file
diff --git a/data/templates/pico/error.500.tpl.php b/data/templates/pico/error.500.tpl.php
new file mode 100644
index 0000000..1d7f7ae
--- /dev/null
+++ b/data/templates/pico/error.500.tpl.php
@@ -0,0 +1,9 @@
+<?php
+header('HTTP/1.x 500 Server error');
+$this->includeTemplate($GLOBALS['top_include']);
+if (!$error) {
+ echo '<h1>'. T_('General server error') .'</h1>';
+ echo '<p>'. T_('The requested URL could not be processed') .'</p>';
+}
+$this->includeTemplate($GLOBALS['bottom_include']);
+?>
diff --git a/data/templates/pico/importDelicious.tpl.php b/data/templates/pico/importDelicious.tpl.php
new file mode 100644
index 0000000..0f53cde
--- /dev/null
+++ b/data/templates/pico/importDelicious.tpl.php
@@ -0,0 +1,42 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+?>
+
+<form id="import" enctype="multipart/form-data" action="<?php echo $formaction; ?>" method="post">
+<table>
+<tr valign="top">
+ <th align="left"><?php echo T_('File'); ?></th>
+ <td>
+ <input type="hidden" name="MAX_FILE_SIZE" value="1024000" />
+ <input type="file" name="userfile" size="50" />
+ </td>
+</tr>
+<tr valign="top">
+ <th align="left"><?php echo T_('Privacy'); ?></th>
+ <td>
+ <select name="status">
+ <option value="0"><?php echo T_('Public'); ?></option>
+ <option value="1"><?php echo T_('Shared with Watchlist'); ?></option>
+ <option value="2"><?php echo T_('Private'); ?></option>
+ </select>
+ </td>
+</tr>
+<tr>
+ <td />
+ <td><input type="submit" value="<?php echo T_('Import'); ?>" /></td>
+</tr>
+</table>
+</form>
+
+<h3><?php echo T_('Instructions'); ?></h3>
+<ol>
+ <li><?php echo T_('Log in to the <a href="https://api.del.icio.us/v1/posts/all">export page at del.icio.us</a>'); ?>.</li>
+ <li><?php echo T_('Save the resulting <abbr title="Extensible Markup Language">XML</abbr> file to your computer'); ?>.</li>
+ <li><?php echo T_('Click <kbd>Browse...</kbd> to find this file on your computer. The maximum size the file can be is 1MB'); ?>.</li>
+ <li><?php echo T_('Select the default privacy setting for your imported bookmarks'); ?>.</li>
+ <li><?php echo T_('Click <kbd>Import</kbd> to start importing the bookmarks; it may take a minute'); ?>.</li>
+</ol>
+
+<?php
+$this->includeTemplate($GLOBALS['bottom_include']);
+?> \ No newline at end of file
diff --git a/data/templates/pico/importNetscape.tpl.php b/data/templates/pico/importNetscape.tpl.php
new file mode 100644
index 0000000..627a5af
--- /dev/null
+++ b/data/templates/pico/importNetscape.tpl.php
@@ -0,0 +1,50 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+?>
+
+<div id="bookmarks">
+ <form id="import" enctype="multipart/form-data" action="<?php echo $formaction; ?>" method="post">
+ <table>
+ <tr valign="top">
+ <th align="left"><?php echo T_('File'); ?></th>
+ <td>
+ <input type="hidden" name="MAX_FILE_SIZE" value="1024000" />
+ <input type="file" name="userfile" size="50" />
+ </td>
+ </tr>
+ <tr valign="top">
+ <th align="left"><?php echo T_('Privacy'); ?></th>
+ <td>
+ <select name="status">
+ <option value="0"><?php echo T_('Public'); ?></option>
+ <option value="1"><?php echo T_('Shared with Watchlist'); ?></option>
+ <option value="2"><?php echo T_('Private'); ?></option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td />
+ <td><input type="submit" value="<?php echo T_('Import'); ?>" /></td>
+ </tr>
+ </table>
+ </form>
+
+ <h3><?php echo T_('Instructions'); ?></h3>
+ <ol>
+ <li>
+ <p><?php echo T_('Export your bookmarks from your browser to a file'); ?>:</p>
+ <ul>
+ <li><?php echo T_('Internet Explorer: <kbd>File &gt; Import and Export... &gt; Export Favorites'); ?></kbd></li>
+ <li><?php echo T_('Mozilla Firefox: <kbd>Bookmarks &gt; Manage Bookmarks... &gt; File &gt; Export...'); ?></kbd></li>
+ <li><?php echo T_('Netscape: <kbd>Bookmarks &gt; Manage Bookmarks... &gt; Tools &gt; Export...'); ?></kbd></li>
+ </ul>
+ </li>
+ <li><?php echo T_('Click <kbd>Browse...</kbd> to find the saved bookmark file on your computer. The maximum size the file can be is 1MB'); ?>.</li>
+ <li><?php echo T_('Select the default privacy setting for your imported bookmarks'); ?>.</li>
+ <li><?php echo T_('Click <kbd>Import</kbd> to start importing the bookmarks; it may take a minute'); ?>.</li>
+ </ol>
+</div>
+
+<?php
+$this->includeTemplate($GLOBALS['bottom_include']);
+?> \ No newline at end of file
diff --git a/data/templates/pico/importStructure.tpl.php b/data/templates/pico/importStructure.tpl.php
new file mode 100644
index 0000000..9c54612
--- /dev/null
+++ b/data/templates/pico/importStructure.tpl.php
@@ -0,0 +1,42 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+?>
+
+<div id="bookmarks">
+<form id="import" enctype="multipart/form-data"
+ action="<?php echo $formaction; ?>" method="post">
+<table>
+ <tr valign="top">
+ <th align="left"><?php echo T_('File'); ?></th>
+ <td><input type="hidden" name="MAX_FILE_SIZE" value="1024000" /> <input
+ type="file" name="userfile" size="50" /></td>
+ </tr>
+ <tr>
+ <td />
+ <td><input type="submit" value="<?php echo T_('Import'); ?>" /></td>
+ </tr>
+</table>
+</form>
+
+<h3><?php echo T_('Instructions'); ?></h3>
+<ol>
+ <li>
+ <p><?php echo T_('Create your structure into a simple text file and following this model:');?></p>
+ <ul>
+ <li>firstTagOfLevel1</li>
+ <li>&nbsp;&nbsp;&nbsp;&nbsp;firstTagOfLevel2 <i>(the line starts with two spaces)</i></li>
+ <li>&nbsp;&nbsp;&nbsp;&nbsp;secondTagOfLevel2</li>
+ <li>&nbsp;&nbsp;&nbsp;&nbsp;thirdTagOfLevel2</li>
+ <li>secondTagOfLevel1</li>
+ <li>&nbsp;&nbsp;&nbsp;&nbsp;fourthTagOfLevel2 <i>(included into secondTagOfLevel1)</i></li>
+ </ul>
+ </li>
+ <li>
+ <p><?php echo T_('Then import the file. The tags and their relations will be added to your profile.'); ?></p>
+ </li>
+</ol>
+</div>
+
+<?php
+$this->includeTemplate($GLOBALS['bottom_include']);
+?> \ No newline at end of file
diff --git a/data/templates/pico/login.tpl.php b/data/templates/pico/login.tpl.php
new file mode 100644
index 0000000..e67808d
--- /dev/null
+++ b/data/templates/pico/login.tpl.php
@@ -0,0 +1,41 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+?>
+
+<script type="text/javascript">
+window.onload = function() {
+ document.getElementById("username").focus();
+}
+</script>
+
+<?php
+if (!$userservice->isSessionStable()) {
+ echo '<p class="error">'.T_('Please activate cookies').'</p>';
+}
+?>
+
+<form action="<?php echo $formaction; ?>" method="post">
+ <div><input type="hidden" name="query" value="<?php echo $querystring; ?>" /></div>
+ <table>
+ <tr>
+ <th align="left"><label for="username"><?php echo T_('Username'); ?></label></th>
+ <td><input type="text" id="username" name="username" size="20" /></td>
+ <td></td>
+ </tr>
+ <tr>
+ <th align="left"><label for="password"><?php echo T_('Password'); ?></label></th>
+ <td><input type="password" id="password" name="password" size="20" /></td>
+ <td><input type="checkbox" name="keeppass" id="keeppass" value="yes" /> <label for="keeppass"><?php echo T_("Don't ask for my password for 2 weeks"); ?>.</label></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td><input type="submit" name="submitted" value="<?php echo T_('Log In'); ?>" /></td>
+ <td></td>
+ </tr>
+ </table>
+ <p>&raquo; <a href="<?php echo ROOT ?>password.php"><?php echo T_('Forgotten your password?') ?></a></p>
+</form>
+
+<?php
+$this->includeTemplate($GLOBALS['bottom_include']);
+?> \ No newline at end of file
diff --git a/data/templates/pico/password.tpl.php b/data/templates/pico/password.tpl.php
new file mode 100644
index 0000000..55dbed6
--- /dev/null
+++ b/data/templates/pico/password.tpl.php
@@ -0,0 +1,26 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+?>
+
+<p><?php echo sprintf(T_('If you have forgotten your password, %s can generate a new one. Enter the username and e-mail address of your account into the form below and we will e-mail your new password to you.'), $GLOBALS['sitename']); ?></p>
+
+<form action="<?php echo $formaction; ?>" method="post">
+ <table>
+ <tr>
+ <th align="left"><label for="username"><?php echo T_('Username'); ?></label></th>
+ <td><input type="text" id="username" name="username" size="20" class="required" /></td>
+ </tr>
+ <tr>
+ <th align="left"><label for="email"><?php echo T_('E-mail'); ?></label></th>
+ <td><input type="text" id="email" name="email" size="40" class="required" /></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td><input type="submit" name="submitted" value="<?php echo T_('Generate Password'); ?>" /></td>
+ </tr>
+ </table>
+</form>
+
+<?php
+$this->includeTemplate($GLOBALS['bottom_include']);
+?> \ No newline at end of file
diff --git a/data/templates/pico/profile.tpl.php b/data/templates/pico/profile.tpl.php
new file mode 100644
index 0000000..1e2003a
--- /dev/null
+++ b/data/templates/pico/profile.tpl.php
@@ -0,0 +1,74 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+?>
+
+<dl id="profile">
+<dt><?php echo T_('Username'); ?></dt>
+ <dd><?php echo $user; ?></dd>
+<?php
+if ($userservice->isLoggedOn() && $currentUser->isAdmin()) {
+?>
+<dt><?php echo T_('Email'); ?></dt>
+ <dd><?php echo filter($objectUser->getEmail()) ?></dd>
+<?php
+}
+if ($objectUser->getName() != "") {
+?>
+<dt><?php echo T_('Name'); ?></dt>
+ <dd><?php echo filter($objectUser->getName()); ?></dd>
+<?php
+}
+if ($objectUser->getHomepage() != "") {
+?>
+<dt><?php echo T_('Homepage'); ?></dt>
+ <dd><a href="<?php echo filter($objectUser->getHomepage()); ?>"><?php echo filter($objectUser->getHomepage()); ?></a></dd>
+<?php
+}
+?>
+<dt><?php echo T_('Member Since'); ?></dt>
+ <dd><?php echo date($GLOBALS['longdate'], strtotime($objectUser->getDatetime())); ?></dd>
+<?php
+if ($objectUser->getContent() != "") {
+?>
+<dt><?php echo T_('Description'); ?></dt>
+ <dd><?php echo $objectUser->getContent(); ?></dd>
+<?php
+}
+$watching = $userservice->getWatchNames($userid);
+if ($watching) {
+?>
+ <dt><?php echo T_('Watching'); ?></dt>
+ <dd>
+ <?php
+ $list = '';
+ foreach($watching as $watchuser) {
+ $list .= '<a href="'. createURL('bookmarks', $watchuser) .'">'. $watchuser .'</a>, ';
+ }
+ echo substr($list, 0, -2);
+ ?>
+ </dd>
+<?php
+}
+$watchnames = $userservice->getWatchNames($userid, true);
+if ($watchnames) {
+?>
+ <dt><?php echo T_('Watched By'); ?></dt>
+ <dd>
+ <?php
+ $list = '';
+ foreach($watchnames as $watchuser) {
+ $list .= '<a href="'. createURL('bookmarks', $watchuser) .'">'. $watchuser .'</a>, ';
+ }
+ echo substr($list, 0, -2);
+ ?>
+ </dd>
+<?php
+}
+?>
+<dt><?php echo T_('Bookmarks'); ?></dt>
+ <dd><a href="<?php echo createURL('bookmarks', $user) ?>"><?php echo T_('Go to bookmarks')?> >></a></dd>
+</dl>
+
+<?php
+$this->includeTemplate($GLOBALS['bottom_include']);
+?>
diff --git a/data/templates/pico/register.tpl.php b/data/templates/pico/register.tpl.php
new file mode 100644
index 0000000..6cfddd7
--- /dev/null
+++ b/data/templates/pico/register.tpl.php
@@ -0,0 +1,54 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+?>
+
+<script type="text/javascript">
+window.onload = function() {
+ document.getElementById("username").focus();
+}
+</script>
+
+<p><?php echo sprintf(T_('Sign up here to create a free %s account. All the information requested below is required'), $GLOBALS['sitename']); ?>.</p>
+
+<form action="<?php echo $formaction; ?>" method="post">
+<table>
+<tr>
+ <th align="left"><label for="username"><?php echo T_('Username'); ?></label></th>
+ <td><input type="text" id="username" name="username" size="20" class="required" onkeyup="isAvailable(this, '')" /> </td>
+ <td id="availability"><?php echo '←'.T_(' at least 5 characters, alphanumeric (no spaces, no dots or other special ones)') ?></td>
+</tr>
+<tr>
+ <th align="left"><label for="password"><?php echo T_('Password'); ?></label></th>
+ <td><input type="password" id="password" name="password" size="20" class="required" /></td>
+ <td></td>
+</tr>
+<tr>
+ <th align="left"><label for="password2"><?php echo T_('Repeat Password'); ?></label></th>
+ <td><input type="password" id="password2" name="password2" size="20" class="required" /></td>
+ <td></td>
+</tr>
+<tr>
+ <th align="left"><label for="email"><?php echo T_('E-mail'); ?></label></th>
+ <td><input type="text" id="email" name="email" size="40" class="required" value="<?php echo htmlspecialchars(POST_MAIL); ?>" /></td>
+ <td><?php echo '←'.T_(' to send you your password if you forget it')?></td>
+</tr>
+
+<?php if(strlen($antispamQuestion)>0) {?>
+<tr>
+ <th align="left"><label for="antispamAnswer"><?php echo T_('Antispam question'); ?></label></th>
+ <td><input type="text" id="antispamAnswer" name="antispamAnswer" size="40" class="required" value="<?php echo $antispamQuestion; ?>" onfocus="if (this.value == '<?php echo $antispamQuestion; ?>') this.value = '';" onblur="if (this.value == '') this.value = '<?php echo $antispamQuestion; ?>';"/></td>
+ <td></td>
+</tr>
+<?php } ?>
+
+<tr>
+ <td></td>
+ <td><input type="submit" name="submitted" value="<?php echo T_('Register'); ?>" /></td>
+ <td></td>
+</tr>
+</table>
+</form>
+
+<?php
+$this->includeTemplate($GLOBALS['bottom_include']);
+?>
diff --git a/data/templates/pico/rss.tpl.php b/data/templates/pico/rss.tpl.php
new file mode 100644
index 0000000..4aba277
--- /dev/null
+++ b/data/templates/pico/rss.tpl.php
@@ -0,0 +1,30 @@
+<?php
+echo '<' . '?xml version="1.0" encoding="utf-8" ?' . ">\n";
+?>
+<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:atom="http://www.w3.org/2005/Atom"
+>
+<channel>
+ <title><?php echo $feedtitle; ?></title>
+ <link><?php echo htmlspecialchars($pagelink); ?></link>
+ <atom:link rel="self" type="application/rss+xml" href="<?php echo htmlspecialchars($feedlink); ?>"/>
+ <description><?php echo htmlspecialchars($feeddescription); ?></description>
+ <pubDate><?php echo date('r'); ?></pubDate>
+ <lastBuildDate><?php echo $feedlastupdate ?></lastBuildDate>
+ <ttl>60</ttl>
+
+<?php foreach($bookmarks as $bookmark): ?>
+ <item>
+ <title><?php echo htmlspecialchars($bookmark['title']); ?></title>
+ <link><?php echo htmlspecialchars($bookmark['link']); ?></link>
+ <guid><?php echo $bookmark['guid']; ?></guid>
+ <description><?php echo htmlspecialchars($bookmark['description']); ?></description>
+ <dc:creator><?php echo htmlspecialchars($bookmark['creator']); ?></dc:creator>
+ <pubDate><?php echo $bookmark['pubdate']; ?></pubDate>
+<?php foreach($bookmark['tags'] as $tag): ?>
+ <category><?php echo htmlspecialchars($tag); ?></category>
+<?php endforeach; ?>
+ </item>
+<?php endforeach; ?>
+</channel>
+</rss>
diff --git a/data/templates/pico/search.menu.php b/data/templates/pico/search.menu.php
new file mode 100644
index 0000000..e56924a
--- /dev/null
+++ b/data/templates/pico/search.menu.php
@@ -0,0 +1,50 @@
+<?php
+
+
+/* Managing all possible inputs */
+$select_watchlist = isset($select_watchlist) ? $select_watchlist : '';
+$select_all = isset($select_all) ? $select_all : '';
+
+$selected = ' selected="selected"';
+if (!isset($range)) {
+ $range = '';
+}
+?>
+
+
+<form role="search" action="<?php echo createURL('search'); ?>" method="post">
+ <?php
+ $currentUser = $currentUsername = null;
+ if ($userservice->isLoggedOn()) {
+ $currentUser = $userservice->getCurrentObjectUser();
+ $currentUsername = $currentUser->getUsername();
+ }
+ if ($userservice->isLoggedOn() || isset($user)) {
+ ?>
+
+ <input type="search" name="terms" size="30" value="<?php echo filter($terms); ?>" placeholder="Search"/>
+ <select name="range">
+ <?php
+ if ($range == 'user' && $user!=$currentUsername) {
+ ?>
+ <option value="<?php echo $user ?>"><?php echo T_("this user's bookmarks"); ?></option>
+ <?php
+ }
+ if ($userservice->isLoggedOn()) {
+ ?>
+ <option value="<?php echo $currentUsername; ?>"><?php echo T_('my bookmarks'); ?></option>
+ <option value="watchlist" <?php echo ($range == 'watchlist')?$selected:''?> ><?php echo T_('my watchlist'); ?></option>
+ <?php
+ }
+ ?>
+ <option value="all" <?php echo ($range == 'all' || $range == '')?$selected:'' ?> ><?php echo T_('all bookmarks'); ?></option>
+ </select>
+ <?php
+ } else {
+ ?>
+ <input type="hidden" name="range" value="all" />
+ <?php
+ }
+ ?>
+ <input type="submit" value="<?php echo T_('Search' /* Submit button */); ?>" />
+</form>
diff --git a/data/templates/pico/sidebar.block.common.php b/data/templates/pico/sidebar.block.common.php
new file mode 100644
index 0000000..dfc83ef
--- /dev/null
+++ b/data/templates/pico/sidebar.block.common.php
@@ -0,0 +1,28 @@
+<?php
+$b2tservice =SemanticScuttle_Service_Factory::get('Bookmark2Tag');
+$commonTags = $b2tservice->getRelatedTagsByHash($hash);
+$commonTags = $b2tservice->tagCloud($commonTags, 5, 90, 225, 'alphabet_asc');
+
+if ($commonTags && count($commonTags) > 0) {
+ ?>
+
+<h2><?php echo T_('Popular Tags'); ?></h2>
+<div id="common">
+<p class="tags"><?php
+$contents = '';
+
+if(strlen($user)==0) {
+ $cat_url = createURL('tags', '%2$s');
+}
+
+foreach ($commonTags as $row) {
+ $entries = T_ngettext('bookmark', 'bookmarks', $row['bCount']);
+ $contents .= '<a href="'. sprintf($cat_url, $user, filter($row['tag'], 'url')) .'" title="'. $row['bCount'] .' '. $entries .'" rel="tag" style="font-size:'. $row['size'] .'">'. filter($row['tag']) .'</a> ';
+}
+echo $contents ."\n";
+?></p>
+</div>
+
+<?php
+}
+?>
diff --git a/data/templates/pico/sidebar.block.linked.php b/data/templates/pico/sidebar.block.linked.php
new file mode 100644
index 0000000..d3a25a5
--- /dev/null
+++ b/data/templates/pico/sidebar.block.linked.php
@@ -0,0 +1,66 @@
+<?php
+/*
+ * Used in:
+ * - populartags.php
+ * - bookmarks.php
+ * - alltags.php
+ * - tags.php
+ */
+/* Service creation: only useful services are created */
+$tag2tagservice =SemanticScuttle_Service_Factory::get('Tag2Tag');
+
+require_once('sidebar.linkedtags.inc.php');
+
+/* Manage input */
+$user = isset($user)?$user:'';
+$userid = isset($userid)?$userid:0;
+$currenttag = isset($currenttag) ? str_replace('+', ',', $currenttag) : '';
+//$summarizeLinkedTags = isset($summarizeLinkedTags)?$summarizeLinkedTags:false;
+
+$logged_on_userid = $userservice->getCurrentUserId();
+$editingMode = $logged_on_userid !== false;
+?>
+<h2><?php echo T_('Linked Tags'); ?></h2>
+<div id="related">
+<?php
+if ($editingMode) {
+ echo '<p style="margin-bottom: 13px;text-align:center;">';
+ echo ' (<a href="'. createURL('tag2tagadd','') .'" rel="tag">'.T_('Add new link').'</a>) ';
+ echo ' (<a href="'. createURL('tag2tagdelete','') .'" rel="tag">'.T_('Delete link').'</a>)';
+ echo '</p>';
+}
+?>
+ <div id="related-content"></div>
+ <script type="text/javascript">//<![CDATA[
+jQuery("#related-content")
+.jstree({
+ "themes" : {
+ "theme": "default",
+ "dots": false,
+ "icons": true,
+ "url": '<?php echo ROOT_JS ?>themes/default/style.css'
+ },
+ "json_data" : {
+ "ajax" : {
+ "url": function(node) {
+ //-1 is root
+ parentparam = "";
+ if (node == -1 ) {
+ node = <?php echo json_encode($currenttag); ?>;
+ parentparam = "&parent=true";
+ } else if (node.attr('rel')) {
+ node = node.attr('rel');
+ } else {
+ return;
+ }
+
+ return "<?php echo ROOT ?>ajax/getlinkedtags.php?tag=" + node
+ + parentparam;
+ }
+ }
+ },
+ plugins : [ "themes", "json_data"]
+});
+//]]>
+ </script>
+</div> \ No newline at end of file
diff --git a/data/templates/pico/sidebar.block.menu.php b/data/templates/pico/sidebar.block.menu.php
new file mode 100644
index 0000000..dfb2c25
--- /dev/null
+++ b/data/templates/pico/sidebar.block.menu.php
@@ -0,0 +1,80 @@
+<?php
+/* Service creation: only useful services are created */
+$tag2tagservice =SemanticScuttle_Service_Factory::get('Tag2Tag');
+
+
+require_once('sidebar.linkedtags.inc.php');
+
+/* Manage input */
+$userid = isset($userid)?$userid:0;
+$user = isset($user)?$user:null;
+
+
+$logged_on_userid = $userservice->getCurrentUserId();
+if ($logged_on_userid === false) {
+ $logged_on_userid = NULL;
+}
+
+// editing mode
+if(($logged_on_userid != null) && ($userid === $logged_on_userid)) {
+ $editingMode = true;
+} else {
+ $editingMode = false;
+}
+
+if(!isset($user) || $user == '') {
+ $cat_url = createURL('tags', '%2$s');
+}
+
+$menuTags = $tag2tagservice->getMenuTags($userid);
+if (sizeof($menuTags) > 0 || ($userid != 0 && $userid === $logged_on_userid)) {
+?>
+
+<h2>
+<?php
+ echo '<span title="'.sprintf(T_('Tags included into the tag \'%s\''), $GLOBALS['menuTag']).'">'.T_('Menu Tags').'</span> ';
+ //}
+?>
+</h2>
+
+
+<div id="related">
+<table>
+<?php
+ if($editingMode) {
+ echo '<tr><td></td><td>';
+ echo ' (<a href="'. createURL('tag2tagadd','menu') .'" rel="tag">'.T_('Add new link').'</a>) ';
+ echo ' (<a href="'. createURL('tag2tagdelete','menu') .'" rel="tag">'.T_('Delete link').'</a>)';
+ echo '</td></tr>';
+ }
+
+ $stopList = array();
+ foreach($menuTags as $menuTag) {
+ $tag = $menuTag['tag'];
+ if(!in_array($tag, $stopList)) {
+ $displayLinkedTags = displayLinkedTags($tag, '>', $userid, $cat_url, $user, $editingMode, null, 1);
+ echo $displayLinkedTags['output'];
+ if(is_array($displayLinkedTags['stopList'])) {
+ $stopList = array_merge($stopList, $displayLinkedTags['stopList']);
+ }
+ }
+ }
+?>
+</table>
+
+<?php $cUser = $userservice->getUser($userid); ?>
+<?php if($cUser && $userid>0): ?>
+<?php if($userid==$logged_on_userid): ?>
+<p style="text-align:right"><a href="<?php echo createURL('alltags', $cUser['username']); ?>" title="<?php echo T_('See all your tags')?>"><?php echo T_('all your tags'); ?></a> →</p>
+<?php else: ?>
+<p style="text-align:right"><a href="<?php echo createURL('alltags', $cUser['username']); ?>" title="<?php echo T_('See all tags from this user')?>"><?php echo T_('all tags from this user'); ?></a> →</p>
+<?php endif; ?>
+
+<?php else : ?>
+<p style="text-align:right"><a href="<?php echo createURL('populartags', $cUser['username']); ?>" title="<?php echo T_('See popular tags')?>"><?php echo T_('Popular Tags'); ?></a> →</p>
+<?php endif; ?>
+</div>
+
+<?php
+}
+?>
diff --git a/data/templates/pico/sidebar.block.menu2.php b/data/templates/pico/sidebar.block.menu2.php
new file mode 100644
index 0000000..1c177a5
--- /dev/null
+++ b/data/templates/pico/sidebar.block.menu2.php
@@ -0,0 +1,71 @@
+<?php
+require_once('sidebar.linkedtags.inc.php');
+
+/* Manage input */
+$userid = isset($userid)?$userid:0;
+$user = isset($user)?$user:null;
+
+
+$logged_on_userid = $userservice->getCurrentUserId();
+if ($logged_on_userid === false) {
+ $logged_on_userid = NULL;
+}
+
+
+$cat_url = createURL('tags', '%s');
+$menu2Tags = $GLOBALS['menu2Tags'];
+
+if (count($menu2Tags) > 0) {
+?>
+
+<h2><?php echo T_('Featured Menu Tags');?></h2>
+
+
+<div id="maintagsmenu"
+<?php echo 'title="'.T_('This menu is composed of keywords (tags) organized by admins.').'"'?>>
+ <ul>
+<?php
+//this is unneeded and replaced by the ajax tree anyway. we keep it for
+// non-js browsers
+foreach ($menu2Tags as $menu2Tag) {
+ echo ' <li>'
+ . sprintf(
+ '<a href="%s">%s</a>',
+ sprintf($cat_url, $menu2Tag),
+ $menu2Tag
+ )
+ . '</li>' . "\n";
+}
+?>
+ </ul>
+</div>
+<script type="text/javascript">
+jQuery("#maintagsmenu")
+.jstree({
+ "themes" : {
+ "theme": "default",
+ "dots": false,
+ "icons": true,
+ "url": '<?php echo ROOT_JS ?>themes/default/style.css'
+ },
+ "json_data" : {
+ "ajax" : {
+ "url": function(node) {
+ //-1 is root
+ if (node == -1 ) {
+ node = "";
+ } else if (node.attr('rel')) {
+ node = node.attr('rel');
+ } else {
+ return;
+ }
+ return "<?php echo ROOT ?>ajax/getadminlinkedtags.php?tag=" + node;
+ }
+ }
+ },
+ plugins : [ "themes", "json_data"]
+});
+</script>
+<?php
+}
+?>
diff --git a/data/templates/pico/sidebar.block.popular.php b/data/templates/pico/sidebar.block.popular.php
new file mode 100644
index 0000000..83ad2fb
--- /dev/null
+++ b/data/templates/pico/sidebar.block.popular.php
@@ -0,0 +1,44 @@
+<?php
+/* Service creation: only useful services are created */
+$b2tservice =SemanticScuttle_Service_Factory::get('Bookmark2Tag');
+
+
+if(!isset($user)) {
+ $user = '';
+}
+if(!isset($userid)) {
+ $userid = NULL;
+}
+
+$logged_on_userid = $userservice->getCurrentUserId();
+if ($logged_on_userid === false) {
+ $logged_on_userid = NULL;
+}
+$popularTags = $b2tservice->getPopularTags($userid, $popCount, $logged_on_userid);
+$popularTags = $b2tservice->tagCloud($popularTags, 5, 90, 225, 'alphabet_asc');
+
+if ($popularTags && count($popularTags) > 0) {
+?>
+
+<h2><?php echo T_('Popular Tags'); ?></h2>
+<div id="popular">
+ <p class="tags">
+ <?php
+ $contents = '';
+
+ if(strlen($user)==0) {
+ $cat_url = createURL('tags', '%2$s');
+ }
+
+ foreach ($popularTags as $row) {
+ $entries = T_ngettext('bookmark', 'bookmarks', (int)$row['bCount']);
+ $contents .= '<a href="'. sprintf($cat_url, $user, filter($row['tag'], 'url')) .'" title="'. $row['bCount'] .' '. $entries .'" rel="tag" style="font-size:'. $row['size'] .'">'. filter($row['tag']) .'</a> ';
+ }
+ echo $contents ."\n";
+ ?>
+ </p>
+</div>
+
+<?php
+}
+?>
diff --git a/data/templates/pico/sidebar.block.recent.php b/data/templates/pico/sidebar.block.recent.php
new file mode 100644
index 0000000..1deae27
--- /dev/null
+++ b/data/templates/pico/sidebar.block.recent.php
@@ -0,0 +1,39 @@
+<?php
+/* Service creation: only useful services are created */
+$b2tservice =SemanticScuttle_Service_Factory::get('Bookmark2Tag');
+
+/* Manage input */
+$userid = isset($userid)?$userid:NULL;
+
+$logged_on_userid = $userservice->getCurrentUserId();
+if ($logged_on_userid === false) {
+ $logged_on_userid = NULL;
+}
+$recentTags = $b2tservice->getPopularTags($userid, $popCount, $logged_on_userid, $GLOBALS['defaultRecentDays']);
+$recentTags = $b2tservice->tagCloud($recentTags, 5, 90, 225, 'alphabet_asc');
+
+if ($recentTags && count($recentTags) > 0) {
+?>
+
+<h2><?php echo T_('Recent Tags'); ?></h2>
+<div id="recent">
+ <?php
+ $contents = '<p class="tags">';
+
+ if(!isset($user) || $user == '') {
+ $user = '';
+ $cat_url = createURL('tags', '%2$s');
+ }
+
+ foreach ($recentTags as $row) {
+ $entries = T_ngettext('bookmark', 'bookmarks', (int)$row['bCount']);
+ $contents .= '<a href="'. sprintf($cat_url, $user, filter($row['tag'], 'url')) .'" title="'. $row['bCount'] .' '. $entries .'" rel="tag" style="font-size:'. $row['size'] .'">'. filter($row['tag']) .'</a> ';
+ }
+ echo $contents ."</p>\n";
+ ?>
+ <p style="text-align:right"><a href="<?php echo createURL('populartags'); ?>"><?php echo T_('Popular Tags'); ?></a> →</p>
+</div>
+
+<?php
+}
+?>
diff --git a/data/templates/pico/sidebar.block.related.php b/data/templates/pico/sidebar.block.related.php
new file mode 100644
index 0000000..60ee486
--- /dev/null
+++ b/data/templates/pico/sidebar.block.related.php
@@ -0,0 +1,40 @@
+<?php
+/* Service creation: only useful services are created */
+$b2tservice =SemanticScuttle_Service_Factory::get('Bookmark2Tag');
+
+
+if(!isset($user)) $user="";
+
+
+$logged_on_userid = $userservice->getCurrentUserId();
+if ($logged_on_userid === false) {
+ $logged_on_userid = NULL;
+}
+
+if(!isset($userid)) {
+ $userid = NULL;
+}
+
+if(isset($user) && strlen($user)==0) {
+ $cat_url = createURL('tags', '%2$s');
+}
+if ($currenttag) {
+ $relatedTags = $b2tservice->getRelatedTags($currenttag, $userid, $logged_on_userid);
+ if (sizeof($relatedTags) > 0) {
+?>
+
+<h2><?php echo T_('Related Tags'); ?></h2>
+<div id="related">
+ <table>
+ <?php foreach($relatedTags as $row): ?>
+ <tr>
+ <td><a href="<?php echo sprintf($cat_url, filter($user, 'url'), filter($row['tag'], 'url')); ?>" rel="tag"><?php echo filter($row['tag']); ?></a> <a href="<?php echo sprintf($cat_url, filter($user, 'url'), filter($currenttag, 'url') .'+'. filter($row['tag'], 'url')); ?>" title="<?php echo $currenttag . '+' . filter($row['tag']); ?>" class="crossTags">+</a></td>
+ </tr>
+ <?php endforeach; ?>
+ </table>
+</div>
+
+<?php
+ }
+}
+?>
diff --git a/data/templates/pico/sidebar.block.search.php b/data/templates/pico/sidebar.block.search.php
new file mode 100644
index 0000000..d3cd8a5
--- /dev/null
+++ b/data/templates/pico/sidebar.block.search.php
@@ -0,0 +1,51 @@
+<?php
+/**
+ * Show a list of the last searches.
+ *
+ * SemanticScuttle - your social bookmark manager.
+ *
+ * PHP version 5.
+ *
+ * @category Bookmarking
+ * @package SemanticScuttle
+ * @subcategory Templates
+ * @author Benjamin Huynh-Kim-Bang <mensonge@users.sourceforge.net>
+ * @author Christian Weiske <cweiske@cweiske.de>
+ * @author Eric Dane <ericdane@users.sourceforge.net>
+ * @license GPL http://www.gnu.org/licenses/gpl.html
+ * @link http://sourceforge.net/projects/semanticscuttle
+ */
+/* Service creation: only useful services are created */
+$searchhistoryservice = SemanticScuttle_Service_Factory::get('SearchHistory');
+
+$lastSearches = $searchhistoryservice->getAllSearches(
+ 'all', NULL, 3, NULL, true, false
+);
+
+if ($lastSearches && count($lastSearches) > 0) {
+?>
+
+<h2><?php echo T_('Last Searches'); ?></h2>
+<div id="searches">
+ <table>
+<?php
+foreach ($lastSearches as $row) {
+ echo ' <tr><td>';
+ echo '<a href="'
+ . htmlspecialchars(createURL('search', $range.'/'.$row['shTerms']))
+ . '">';
+ echo htmlspecialchars($row['shTerms']);
+ echo '</a>';
+ echo ' <span title="'
+ . T_('Number of bookmarks for this query')
+ . '">(' . $row['shNbResults'] . ')</span>';
+ echo '</td></tr>' . "\n";
+}
+//echo '<tr><td><a href="'.createURL('users').'">...</a></td></tr>';
+?>
+
+ </table>
+</div>
+<?php
+}
+?>
diff --git a/data/templates/pico/sidebar.block.tagactions.php b/data/templates/pico/sidebar.block.tagactions.php
new file mode 100644
index 0000000..3351866
--- /dev/null
+++ b/data/templates/pico/sidebar.block.tagactions.php
@@ -0,0 +1,35 @@
+<?php
+/* Service creation: only useful services are created */
+//No specific services
+
+if ($userservice->isLoggedOn()) {
+
+ if ($currentUser->getUsername() == $user) {
+ $tags = explode('+', $currenttag);
+ $renametext = T_ngettext('Rename Tag', 'Rename Tags', count($tags));
+ $renamelink = createURL('tagrename', $currenttag);
+ $deletelink = createURL('tagdelete', $currenttag);
+ $tagdesclink = createURL('tagedit', $currenttag);
+ $commondesclink = createURL('tagcommondescriptionedit', $currenttag);
+ $addtag2taglinklink = createURL('tag2tagadd', $currenttag);
+?>
+
+<h2><?php echo T_('Actions'); ?></h2>
+<div id="tagactions">
+ <ul>
+ <li><a href="<?php echo $renamelink; ?>"><?php echo $renametext ?></a></li>
+ <?php if (count($tags) == 1): ?>
+ <li><a href="<?php echo $deletelink; ?>"><?php echo T_('Delete Tag') ?></a></li>
+ <?php endif; ?>
+ <li><a href="<?php echo $tagdesclink; ?>"><?php echo T_('Edit Tag Description') ?></a></li>
+ <?php if ($GLOBALS['enableCommonTagDescription'] && ($GLOBALS['enableCommonTagDescriptionEditedByAll'] || $currentUser->isAdmin() )): ?>
+ <li><a href="<?php echo $commondesclink; ?>"><?php echo T_('Edit Tag Common Description') ?></a></li>
+ <?php endif; ?>
+ <li><a href="<?php echo $addtag2taglinklink; ?>"><?php echo T_('Create a link to another tag') ?></a></li>
+ </ul>
+</div>
+
+<?php
+ }
+}
+?>
diff --git a/data/templates/pico/sidebar.block.users.php b/data/templates/pico/sidebar.block.users.php
new file mode 100644
index 0000000..58fdfb7
--- /dev/null
+++ b/data/templates/pico/sidebar.block.users.php
@@ -0,0 +1,34 @@
+<?php
+/* Service creation: only useful services are created */
+//No specific services
+
+$logged_on_userid = $userservice->getCurrentUserId();
+if ($logged_on_userid === false) {
+ $logged_on_userid = NULL;
+}
+$lastUsers = $userservice->getUsers(3);
+
+if ($lastUsers && count($lastUsers) > 0) {
+?>
+
+<h2><?php echo T_('New Users'); ?></h2>
+<div id="users">
+<table>
+<?php
+foreach ($lastUsers as $row) {
+ echo '<tr><td>';
+ echo '<a href="'.createURL('profile', $row['username']).'">';
+ echo SemanticScuttle_Model_UserArray::getName($row);
+ echo '</a>';
+ echo ' (<a href="'.createURL('bookmarks', $row['username']).'">'.T_('bookmarks').'</a>)';
+ echo '</td></tr>';
+}
+//echo '<tr><td><a href="'.createURL('users').'">...</a></td></tr>';
+?>
+
+</table>
+<p style="text-align:right"><a href="<?php echo createURL('users'); ?>" title="<?php echo T_('See all users')?>"><?php echo T_('All users'); ?></a> →</p>
+</div>
+<?php
+}
+?>
diff --git a/data/templates/pico/sidebar.block.watchlist.php b/data/templates/pico/sidebar.block.watchlist.php
new file mode 100644
index 0000000..3af9c5a
--- /dev/null
+++ b/data/templates/pico/sidebar.block.watchlist.php
@@ -0,0 +1,60 @@
+<?php
+/* Service creation: only useful services are created */
+//No specific services
+
+$watching = $userservice->getWatchNames($userid);
+$watchedBy = $userservice->getWatchNames($userid, true);
+
+
+$closeContacts = array(); // people in my contacts list and who I am also in the contacts list
+foreach($watching as $watchuser) {
+ if(in_array($watchuser, $watchedBy)) {
+ $closeContacts[] = $watchuser;
+ }
+}
+
+?>
+
+<?php if(count($closeContacts)>0):?>
+<h2 title="<?php echo T_('Close contacts are mutual contacts');?>"><?php echo ' ↔ '. T_('Close contacts'); ?></h2>
+<div id="watching">
+ <ul>
+ <?php foreach($closeContacts as $watchuser): ?>
+ <li><a href="<?php echo createURL('bookmarks', $watchuser); ?>"><?php echo $watchuser; ?></a> </li>
+ <?php endforeach; ?>
+ </ul>
+</div>
+<?php endif; ?>
+
+
+<h2><?php echo ' → '. T_('Watching'); ?></h2>
+<div id="watching">
+ <ul>
+ <?php if($userservice->isLoggedOn() && $currentUser->getUsername() == $user): ?>
+ <li>
+ <form action="<?php echo createURL('watch', '');?>" method="post">
+ <input type="text" name="contact" value="<?php echo T_('Add a contact...');?>" onfocus="if (this.value == '<?php echo T_('Add a contact...');?>') this.value = '';" onblur="if (this.value == '') this.value = '<?php echo T_('Add a contact...');?>';" title="<?php echo T_('Type a username to add it to your contacts.') ?>" />
+ </form>
+ </li>
+ <?php endif; ?>
+
+ <?php foreach($watching as $watchuser): ?>
+ <li><a href="<?php echo createURL('bookmarks', $watchuser); ?>"><?php echo $watchuser; ?></a>
+ <?php if($userservice->isLoggedOn() && $currentUser->getUsername() == $user): ?>
+ - <a href="<?php echo createUrl('watch','?contact='.$watchuser); ?>" title="<?php echo T_('Remove this contact'); ?>">x</a>
+ </li>
+ <?php endif; ?>
+ <?php endforeach; ?>
+
+ </ul>
+</div>
+
+<h2><?php echo ' ← '. T_('Watched By'); ?></h2>
+<div id="watching">
+ <ul>
+ <?php foreach($watchedBy as $watchuser): ?>
+ <li><a href="<?php echo createURL('bookmarks', $watchuser); ?>"><?php echo $watchuser; ?></a> </li>
+ <?php endforeach; ?>
+ </ul>
+
+</div>
diff --git a/data/templates/pico/sidebar.block.watchstatus.php b/data/templates/pico/sidebar.block.watchstatus.php
new file mode 100644
index 0000000..99574aa
--- /dev/null
+++ b/data/templates/pico/sidebar.block.watchstatus.php
@@ -0,0 +1,28 @@
+<?php
+/* Service creation: only useful services are created */
+//No specific services
+
+
+if ($userservice->isLoggedOn()) {
+
+ if ($currentUser->getUsername() != $user) {
+ $result = $userservice->getWatchStatus($userid, $userservice->getCurrentUserId());
+ if ($result) {
+ $linkText = T_('Remove from Watchlist');
+ } else {
+ $linkText = T_('Add to Watchlist');
+ }
+ $linkAddress = createURL('watch', $user);
+?>
+
+<h2><?php echo T_('Actions'); ?></h2>
+<div id="watchlist">
+ <ul>
+ <li><a href="<?php echo $linkAddress ?>"><?php echo $linkText ?></a></li>
+ </ul>
+</div>
+
+<?php
+ }
+}
+?> \ No newline at end of file
diff --git a/data/templates/pico/sidebar.linkedtags.inc.php b/data/templates/pico/sidebar.linkedtags.inc.php
new file mode 100644
index 0000000..020d0f0
--- /dev/null
+++ b/data/templates/pico/sidebar.linkedtags.inc.php
@@ -0,0 +1,84 @@
+<?php
+/*
+To be inserted into blocks where structured tags must be displayed in a tree format.
+*/
+
+function displayLinkedTags($tag, $linkType, $uId, $cat_url, $user, $editingMode =false, $precedentTag =null, $level=0, $stopList=array()) {
+
+ if(in_array($tag, $stopList)) {
+ return array('output' => '', 'stoplist' => $stopList);
+ }
+
+ $tag2tagservice =SemanticScuttle_Service_Factory::get('Tag2Tag');
+ $tagstatservice =SemanticScuttle_Service_Factory::get('TagStat');
+
+ // link '>'
+ if($level>1) {
+ if($editingMode) {
+ $link = '<small><a href="'.createURL('tag2tagedit', $precedentTag.'/'.$tag).'" title="'._('Edit link').'">></a> </small>';
+ } else {
+ $link = '> ';
+ }
+ } else {
+ $link = '';
+ }
+
+ $output = '';
+ $output.= '<tr>';
+ $output.= '<td></td>';
+ $output.= '<td>';
+ $output.= $level == 1?'<b>':'';
+ $output.= str_repeat('&nbsp;', $level*2) .$link.'<a href="'. sprintf($cat_url, filter($user, 'url'), filter($tag, 'url')) .'" rel="tag">'. filter($tag) .'</a>';
+ $output.= $level == 1?'</b>':'';
+ //$output.= ' - '. $tagstatservice->getMaxDepth($tag, $linkType, $uId);
+
+ $synonymTags = $tag2tagservice->getAllLinkedTags($tag, '=', $uId);
+ $synonymTags = is_array($synonymTags)?$synonymTags:array($synonymTags);
+ sort($synonymTags);
+ $synonymList = '';
+ foreach($synonymTags as $synonymTag) {
+ //$output.= ", ".$synonymTag;
+ $synonymList.= $synonymTag.' ';
+ }
+ if(count($synonymTags)>0) {
+ $output.= ', '.$synonymTags[0];
+ }
+ if(count($synonymTags)>1) {
+ $output.= '<span title="'.T_('Synonyms:').' '.$synonymList.'">, etc</span>';
+ }
+
+ /*if($editingMode) {
+ $output.= ' (';
+ $output.= '<a href="'.createURL('tag2tagadd', $tag).'" title="'._('Add a subtag').'">+</a>';
+ if(1) {
+ $output.= ' - ';
+ $output.= '<a href="'.createURL('tag2tagdelete', $tag).'">-</a>';
+ }
+ $output.= ')';
+ }*/
+ $output.= '</td>';
+ $output.= '</tr>';
+
+ $tags = array($tag);
+ $tags = array_merge($tags, $synonymTags);
+ foreach($tags as $tag) {
+
+ if(!in_array($tag, $stopList)) {
+ $linkedTags = $tag2tagservice->getLinkedTags($tag, '>', $uId);
+ $precedentTag = $tag;
+ $stopList[] = $tag;
+ foreach($linkedTags as $linkedTag) {
+ $displayLinkedTags = displayLinkedTags($linkedTag, $linkType, $uId, $cat_url, $user, $editingMode, $precedentTag, $level + 1, $stopList);
+ $output.= $displayLinkedTags['output'];
+ }
+ if(isset($displayLinkedTags) && is_array($displayLinkedTags['stopList'])) {
+ $stopList = array_merge($stopList, $displayLinkedTags['stopList']);
+ $stopList = array_unique($stopList);
+ }
+ }
+
+ }
+ return array('output' => $output, 'stopList' => $stopList);
+}
+
+?>
diff --git a/data/templates/pico/sidebar.tpl.php b/data/templates/pico/sidebar.tpl.php
new file mode 100644
index 0000000..b4fac96
--- /dev/null
+++ b/data/templates/pico/sidebar.tpl.php
@@ -0,0 +1,23 @@
+<?php if ($GLOBALS['enableAdminColors'] != false
+ && isset($userid) && $userservice->isAdmin($userid)
+): ?>
+<div id="sidebar" class="adminBackground">
+<?php else: ?>
+<div id="sidebar">
+<?php endif ?>
+
+
+<?php
+echo $GLOBALS['sidebarTopMessage'].' ';
+
+if (isset($sidebar_blocks) && count($sidebar_blocks)) {
+ $size = count($sidebar_blocks);
+ for ($i = 0; $i < $size; $i++) {
+ $this->includeTemplate('sidebar.block.'. $sidebar_blocks[$i]);
+ }
+}
+
+echo $GLOBALS['sidebarBottomMessage'];
+?>
+
+</div>
diff --git a/data/templates/pico/tag2tagadd.tpl.php b/data/templates/pico/tag2tagadd.tpl.php
new file mode 100644
index 0000000..9482007
--- /dev/null
+++ b/data/templates/pico/tag2tagadd.tpl.php
@@ -0,0 +1,57 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+?>
+
+<form action="<?php echo $formaction; ?>" method="post">
+
+<p align="right" style="float:right">
+<small style="text-align:right"><?php echo T_('Note: use "=" to make synonym two tags. e.g.: france=frenchcountry')?></small><br/>
+<small style="text-align:right"><?php echo T_('Note: use ">" to include one tag in another. e.g.: europe>france>paris')?></small><br/>
+</p>
+
+<p><?php echo T_('Create new link:')?></p>
+<p>
+<input type="text" name="tag1" value="<?php echo $tag1 ?>"/>
+<input type="text" name="linkType" value=">" size="1" maxlength="1"/>
+<input type="text" name="tag2" />
+</p>
+<p>
+<small style="text-align:right"><?php echo sprintf(T_('Note: include a tag into \'%s\' tag (e.g. %s>countries) display the tag into the menu box'), $GLOBALS['menuTag'], $GLOBALS['menuTag'])?></small>
+</p>
+<!--p><?php echo T_('Are you sure?'); ?></p-->
+<p>
+ <input type="submit" name="confirm" value="<?php echo T_('Create'); ?>" />
+ <input type="submit" name="cancel" value="<?php echo T_('Cancel'); ?>" />
+</p>
+
+<?php if (isset($referrer)): ?>
+<div><input type="hidden" name="referrer" value="<?php echo $referrer; ?>" /></div>
+<?php endif; ?>
+
+</form>
+
+<?php
+if(count($links)>0) {
+echo T_("Existing links:");
+foreach($links as $link) {
+ echo '<span style="white-space:nowrap;margin-left:25px;">';
+ if($link['tag1'] == $tag1 || $link['tag1'] == $tag2) {
+ $textTag1 = '<b>'.$tag1.'</b>';
+ } else {
+ $textTag1 = $link['tag1'];
+ }
+ if($link['tag2'] == $tag1 || $link['tag2'] == $tag2) {
+ $textTag2 = '<b>'.$tag2.'</b>';
+ } else {
+ $textTag2 = $link['tag2'];
+ }
+
+ echo $textTag1.' '.$link['relationType'].' '.$textTag2;
+ echo "</span> ";
+}
+} else {
+ echo T_('No links');
+}
+
+$this->includeTemplate($GLOBALS['bottom_include']);
+?>
diff --git a/data/templates/pico/tag2tagdelete.tpl.php b/data/templates/pico/tag2tagdelete.tpl.php
new file mode 100644
index 0000000..8018374
--- /dev/null
+++ b/data/templates/pico/tag2tagdelete.tpl.php
@@ -0,0 +1,49 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+?>
+
+<form action="<?php echo $formaction; ?>" method="post">
+<!--input type="hidden" name="tag1" value="<?php echo $tag1 ?>" />
+<input type="hidden" name="tag2" value="<?php echo $tag2 ?>" /-->
+<p>
+<input type="text" name="tag1" value="<?php echo $tag1 ?>"/>
+<input type="text" name="linkType" value=">" size="1" maxlength="1"/>
+<input type="text" name="tag2" value="<?php echo $tag2 ?>"/>
+</p>
+<p><?php echo T_('Are you sure?'); ?></p>
+<p>
+ <input type="submit" name="confirm" value="<?php echo T_('Yes'); ?>" />
+ <input type="submit" name="cancel" value="<?php echo T_('No'); ?>" />
+</p>
+
+<?php if (isset($referrer)): ?>
+<div><input type="hidden" name="referrer" value="<?php echo $referrer; ?>" /></div>
+<?php endif; ?>
+
+</form>
+
+<?php
+if(count($links)>0) {
+echo T_("Existing links:");
+foreach($links as $link) {
+ echo '<span style="white-space:nowrap;margin-left:25px;">';
+ if($link['tag1'] == $tag1 || $link['tag1'] == $tag2) {
+ $textTag1 = '<b>'.$tag1.'</b>';
+ } else {
+ $textTag1 = $link['tag1'];
+ }
+ if($link['tag2'] == $tag1 || $link['tag2'] == $tag2) {
+ $textTag2 = '<b>'.$tag2.'</b>';
+ } else {
+ $textTag2 = $link['tag2'];
+ }
+
+ echo $textTag1.' '.$link['relationType'].' '.$textTag2;
+ echo "</span> ";
+}
+} else {
+ echo T_('No links');
+}
+
+$this->includeTemplate($GLOBALS['bottom_include']);
+?>
diff --git a/data/templates/pico/tag2tagedit.tpl.php b/data/templates/pico/tag2tagedit.tpl.php
new file mode 100644
index 0000000..4745ad2
--- /dev/null
+++ b/data/templates/pico/tag2tagedit.tpl.php
@@ -0,0 +1,73 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+?>
+
+<form action="<?php echo $formdeleteaction; ?>" method="post">
+<p><?php echo T_('Delete the link')?></p>
+<!--input type="hidden" name="tag1" value="<?php echo $tag1 ?>" />
+<input type="hidden" name="tag2" value="<?php echo $tag2 ?>" /-->
+<p>
+<input type="text" name="tag1" value="<?php echo $tag1 ?>"/>
+<input type="text" name="linkType" value=">" size="1" maxlength="1"/>
+<input type="text" name="tag2" value="<?php echo $tag2 ?>"/>
+</p>
+<p><?php echo T_('Are you sure?'); ?></p>
+<p>
+ <input type="submit" name="confirm" value="<?php echo T_('Yes'); ?>" />
+ <input type="submit" name="cancel" value="<?php echo T_('No'); ?>" />
+</p>
+
+<?php if (isset($referrer)): ?>
+<div><input type="hidden" name="referrer" value="<?php echo $referrer; ?>" /></div>
+<?php endif; ?>
+
+</form>
+
+<hr />
+
+<form action="<?php echo $formaddaction; ?>" method="post">
+<p><?php echo T_('Create new link')?></p>
+<p>
+<input type="text" name="tag1" value="<?php echo $tag1 ?>"/>
+<input type="text" name="linkType" value=">" size="1" maxlength="1"/>
+<input type="text" name="tag2" />
+</p>
+<!--p><?php echo T_('Are you sure?'); ?></p-->
+<p>
+ <input type="submit" name="confirm" value="<?php echo T_('Create'); ?>" />
+ <input type="submit" name="cancel" value="<?php echo T_('Cancel'); ?>" />
+</p>
+
+<?php if (isset($referrer)): ?>
+<div><input type="hidden" name="referrer" value="<?php echo $referrer; ?>" /></div>
+<?php endif; ?>
+
+</form>
+
+<hr />
+
+<?php
+if(count($links)>0) {
+echo T_("Existing links:");
+foreach($links as $link) {
+ echo '<span style="white-space:nowrap;margin-left:25px;">';
+ if($link['tag1'] == $tag1 || $link['tag1'] == $tag2) {
+ $textTag1 = '<b>'.$tag1.'</b>';
+ } else {
+ $textTag1 = $link['tag1'];
+ }
+ if($link['tag2'] == $tag1 || $link['tag2'] == $tag2) {
+ $textTag2 = '<b>'.$tag2.'</b>';
+ } else {
+ $textTag2 = $link['tag2'];
+ }
+
+ echo $textTag1.' '.$link['relationType'].' '.$textTag2;
+ echo "</span> ";
+}
+} else {
+ echo T_('No links');
+}
+
+$this->includeTemplate($GLOBALS['bottom_include']);
+?>
diff --git a/data/templates/pico/tagcommondescriptionedit.tpl.php b/data/templates/pico/tagcommondescriptionedit.tpl.php
new file mode 100644
index 0000000..f52d5b0
--- /dev/null
+++ b/data/templates/pico/tagcommondescriptionedit.tpl.php
@@ -0,0 +1,53 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+
+?>
+<script type="text/javascript">
+window.onload = function() {
+ document.getElementById("description").focus();
+}
+</script>
+<form action="<?php echo $formaction; ?>" method="post">
+<table>
+<tr>
+ <th align="left"><?php echo T_('Description'); ?></th>
+ <td><textarea name="description" cols="75" rows="10"><?php echo $description['cdDescription']; ?></textarea></td>
+</tr>
+<tr>
+ <td></td>
+ <td>
+ <?php
+ if(strlen($description['cdDatetime'])>0) {
+ echo T_('Last modification:').' '.$description['cdDatetime'].', ';
+ $lastUser = $userservice->getUser($description['uId']);
+ if ($lastUser) {
+ echo '<a href="' . createURL('profile', $lastUser['username']) . '">'
+ . SemanticScuttle_Model_UserArray::getName($lastUser) . '</a>';
+ }
+ else {
+ echo 'Unknown user';
+ }
+ }
+ ?>
+ </td>
+ <td></td>
+</tr>
+<tr>
+ <td></td>
+ <td>
+ <input type="submit" name="confirm" value="<?php echo T_('Update'); ?>" />
+ <input type="submit" name="cancel" value="<?php echo T_('Cancel'); ?>" />
+ </td>
+ <td></td>
+</tr>
+</table>
+
+<?php if (isset($referrer)): ?>
+<div><input type="hidden" name="referrer" value="<?php echo $referrer; ?>" /></div>
+<?php endif; ?>
+<div><input type="hidden" name="tag" value="<?php echo $tag; ?>" /></div>
+</form>
+
+<?php
+$this->includeTemplate($GLOBALS['bottom_include']);
+?>
diff --git a/data/templates/pico/tagdelete.tpl.php b/data/templates/pico/tagdelete.tpl.php
new file mode 100644
index 0000000..e787ff5
--- /dev/null
+++ b/data/templates/pico/tagdelete.tpl.php
@@ -0,0 +1,20 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+?>
+
+<form action="<?php echo $formaction; ?>" method="post">
+<p><?php echo T_('Are you sure?'); ?></p>
+<p>
+ <input type="submit" name="confirm" value="<?php echo T_('Yes'); ?>" />
+ <input type="submit" name="cancel" value="<?php echo T_('No'); ?>" />
+</p>
+
+<?php if (isset($referrer)): ?>
+<div><input type="hidden" name="referrer" value="<?php echo $referrer; ?>" /></div>
+<?php endif; ?>
+
+</form>
+
+<?php
+$this->includeTemplate($GLOBALS['bottom_include']);
+?> \ No newline at end of file
diff --git a/data/templates/pico/tagedit.tpl.php b/data/templates/pico/tagedit.tpl.php
new file mode 100644
index 0000000..860c933
--- /dev/null
+++ b/data/templates/pico/tagedit.tpl.php
@@ -0,0 +1,33 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+?>
+<script type="text/javascript">
+window.onload = function() {
+ document.getElementById("description").focus();
+}
+</script>
+<form action="<?php echo $formaction; ?>" method="post">
+<table>
+<tr>
+ <th align="left"><?php echo T_('Description'); ?></th>
+ <td><textarea name="description" cols="75" rows="10"><?php echo $description['tDescription']; ?></textarea></td>
+</tr>
+<tr>
+ <td></td>
+ <td>
+ <input type="submit" name="confirm" value="<?php echo T_('Update'); ?>" />
+ <input type="submit" name="cancel" value="<?php echo T_('Cancel'); ?>" />
+ </td>
+ <td></td>
+</tr>
+</table>
+
+<?php if (isset($referrer)): ?>
+<div><input type="hidden" name="referrer" value="<?php echo $referrer; ?>" /></div>
+<?php endif; ?>
+<div><input type="hidden" name="tag" value="<?php echo $tag; ?>" /></div>
+</form>
+
+<?php
+$this->includeTemplate($GLOBALS['bottom_include']);
+?>
diff --git a/data/templates/pico/tagrename.tpl.php b/data/templates/pico/tagrename.tpl.php
new file mode 100644
index 0000000..e3d0467
--- /dev/null
+++ b/data/templates/pico/tagrename.tpl.php
@@ -0,0 +1,40 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+?>
+<script type="text/javascript">
+window.onload = function() {
+ document.getElementById("new").focus();
+}
+</script>
+<form action="<?php echo $formaction; ?>" method="post">
+<table>
+<tr>
+ <th align="left"><?php echo T_('Old'); ?></th>
+ <td><input type="text" name="old" id="old" value="<?php echo $old; ?>" /></td>
+ <td>← <?php echo T_('Required'); ?></td>
+</tr>
+<tr>
+ <th align="left"><?php echo T_('New'); ?></th>
+ <td><input type="text" name="new" id="new" value="" /></td>
+ <td>← <?php echo T_('Required'); ?></td>
+</tr>
+<tr>
+ <td></td>
+ <td>
+ <input type="submit" name="confirm" value="<?php echo T_('Rename'); ?>" />
+ <input type="submit" name="cancel" value="<?php echo T_('Cancel'); ?>" />
+ </td>
+ <td></td>
+</tr>
+
+</table>
+
+<?php if (isset($referrer)): ?>
+<div><input type="hidden" name="referrer" value="<?php echo $referrer; ?>" /></div>
+<?php endif; ?>
+
+</form>
+
+<?php
+$this->includeTemplate($GLOBALS['bottom_include']);
+?> \ No newline at end of file
diff --git a/data/templates/pico/tags.tpl.php b/data/templates/pico/tags.tpl.php
new file mode 100644
index 0000000..dce5e1c
--- /dev/null
+++ b/data/templates/pico/tags.tpl.php
@@ -0,0 +1,31 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+?>
+
+<?php
+if ($tags && count($tags) > 0) {
+?>
+
+<p id="sort">
+ <?php echo T_("Sort by:"); ?>
+ <a href="?sort=alphabet_asc"><?php echo T_("Alphabet"); ?></a><span> / </span>
+ <a href="?sort=popularity_asc"><?php echo T_("Popularity"); ?></a>
+</p>
+<p class="tags">
+
+<?php
+$contents = '';
+foreach ($tags as $row) {
+ $entries = T_ngettext('bookmark', 'bookmarks', (int)$row['bCount']);
+ $contents .= '<a href="'. sprintf($cat_url, $user, filter($row['tag'], 'url')) .'" title="'. $row['bCount'] .' '. $entries .'" rel="tag" style="font-size:'. $row['size'] .'">'. filter($row['tag']) .'</a> ';
+}
+echo $contents ."\n";
+?>
+
+</p>
+
+<?php
+}
+$this->includeTemplate('sidebar.tpl');
+$this->includeTemplate($GLOBALS['bottom_include']);
+?>
diff --git a/data/templates/pico/toolbar.inc.php b/data/templates/pico/toolbar.inc.php
new file mode 100644
index 0000000..b2ab334
--- /dev/null
+++ b/data/templates/pico/toolbar.inc.php
@@ -0,0 +1,30 @@
+<?php
+if ($userservice->isLoggedOn() && is_object($currentUser)) {
+ $cUserId = $userservice->getCurrentUserId();
+ $cUsername = $currentUser->getUsername();
+?>
+
+ <li><a href="<?php echo createURL(''); ?>"><?php echo T_('Home'); ?></a></li>
+ <li><a href="<?php echo createURL('bookmarks', $cUsername); ?>"><?php echo T_('Bookmarks'); ?></a></li>
+ <li><a href="<?php echo createURL('alltags', $cUsername); ?>"><?php echo T_('Tags'); ?></a></li>
+ <li><a href="<?php echo createURL('watchlist', $cUsername); ?>"><?php echo T_('Watchlist'); ?></a></li>
+ <li><a href="<?php echo $userservice->getProfileUrl($cUserId, $cUsername); ?>"><?php echo T_('Profile'); ?></a></li>
+ <li><a href="<?php echo createURL('bookmarks', $cUsername . '?action=add'); ?>"><?php echo T_('Add a Bookmark'); ?></a></li>
+ <li class="access"><?php echo $cUsername?><a href="<?php echo ROOT ?>?action=logout">(<?php echo T_('Log Out'); ?>)</a></li>
+ <li><a href="<?php echo createURL('about'); ?>"><?php echo T_('About'); ?></a></li>
+ <?php if($currentUser->isAdmin()): ?>
+ <li><a href="<?php echo createURL('admin', ''); ?>"><?php echo '['.T_('Admin').']'; ?></a></li>
+ <?php endif; ?>
+<?php
+} else {
+?>
+ <li><a href="<?php echo createURL(''); ?>"><?php echo T_('Home'); ?></a></li>
+ <li><a href="<?php echo createURL('populartags'); ?>"><?php echo T_('Popular Tags'); ?></a></li>
+ <li><a href="<?php echo createURL('about'); ?>"><?php echo T_('About'); ?></a></li>
+ <li class="access"><a href="<?php echo createURL('login'); ?>"><?php echo T_('Log In'); ?></a></li>
+ <?php if ($GLOBALS['enableRegistration']) { ?>
+ <li class="access"><a href="<?php echo createURL('register'); ?>"><?php echo T_('Register'); ?></a></li>
+ <?php } ?>
+<?php
+}
+?>
diff --git a/data/templates/pico/top.inc.php b/data/templates/pico/top.inc.php
new file mode 100644
index 0000000..1ae9607
--- /dev/null
+++ b/data/templates/pico/top.inc.php
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <meta name="color-scheme" content="light dark" />
+ <link rel="icon" type="image/png"
+ href="<?php echo $theme->resource('icon.png');?>" />
+ <link rel="stylesheet" type="text/css"
+ href="<?php echo $theme->resource('css/pico.min.css');?>" />
+ <link rel="search" type="application/opensearchdescription+xml"
+ href="<?php echo ROOT ?>api/opensearch.php"
+ title="<?php echo htmlspecialchars($GLOBALS['sitename']) ?>"/>
+<?php
+if (isset($rsschannels)) {
+ $size = count($rsschannels);
+ for ($i = 0; $i < $size; $i++) {
+ echo ' <link rel="alternate" type="application/rss+xml" title="'
+ . htmlspecialchars($rsschannels[$i][0]) . '"'
+ . ' href="'. htmlspecialchars($rsschannels[$i][1]) .'" />' . "\n";
+ }
+}
+?>
+
+<?php if (isset($loadjs)) :?>
+<?php if (DEBUG_MODE) : ?>
+ <script type="text/javascript" src="<?php echo ROOT_JS ?>jquery-1.4.2.js"></script>
+ <script type="text/javascript" src="<?php echo ROOT_JS ?>jquery.jstree.js"></script>
+<?php else: ?>
+ <script type="text/javascript" src="<?php echo ROOT_JS ?>jquery-1.4.2.min.js"></script>
+ <script type="text/javascript" src="<?php echo ROOT_JS ?>jquery.jstree.min.js"></script>
+<?php endif ?>
+ <script type="text/javascript" src="<?php echo ROOT ?>jsScuttle.php"></script>
+<?php endif ?>
+
+ <title><?php echo filter($GLOBALS['sitename'] .(isset($pagetitle) ? ' » ' . $pagetitle : '')); ?></title>
+ </head>
+<?php
+$bodystyle = '';
+if (isset($_GET['popup'])) {
+ if (isset($_GET['height'])) {
+ $bodystyle .= 'height:' . intval($_GET['height']) . 'px;';
+ }
+ if (isset($_GET['width'])) {
+ $bodystyle .= 'width:' . intval($_GET['width']) . 'px;';
+ }
+ if ($bodystyle != '') {
+ $bodystyle = ' style="' . $bodystyle . '"';
+ }
+}
+?>
+ <body>
+ <main class="container">
+
+<header>
+ <nav>
+ <ul>
+ <li><strong><a href="<?php echo ROOT ?>"><?php echo $GLOBALS['sitename']; ?></a></strong></li>
+ </ul>
+ <ul>
+ <?php
+if(!isset($_GET['popup'])) {
+ $this->includeTemplate('toolbar.inc');
+}
+?>
+ </ul>
+ </nav>
+
+<?php
+if (isset($subtitlehtml)) {
+ echo '<h2>' . $subtitlehtml . "</h2>\n";
+} else if (isset($subtitle)) {
+ echo '<h2>' . htmlspecialchars($subtitle) . "</h2>\n";
+}
+if(DEBUG_MODE) {
+ echo '<p class="error">'. T_('Admins, your installation is in "Debug Mode" ($debugMode = true). To go in "Normal Mode" and hide debugging messages, change $debugMode to false into config.php.') ."</p>\n";
+}
+if (isset($error) && $error!='') {
+ echo '<p class="error">'. $error ."</p>\n";
+}
+if (isset($msg) && $msg!='') {
+ echo '<p class="success">'. $msg ."</p>\n";
+}
+if (isset($tipMsg) && $tipMsg!='') {
+ echo '<p class="tipMsg">'. $tipMsg ."</p>\n";
+}
+?>
diff --git a/data/templates/pico/users.tpl.php b/data/templates/pico/users.tpl.php
new file mode 100644
index 0000000..fa92bef
--- /dev/null
+++ b/data/templates/pico/users.tpl.php
@@ -0,0 +1,33 @@
+<?php
+$this->includeTemplate($GLOBALS['top_include']);
+
+if ($users && count($users) > 0) {
+?>
+
+<!--p id="sort">
+ <?php echo T_("Sort by:"); ?>
+ <a href="?sort=alphabet_asc"><?php echo T_("Alphabet"); ?></a><span> / </span>
+ <a href="?sort=popularity_asc"><?php echo T_("Popularity"); ?></a>
+</p-->
+<p class="users">
+<ul>
+<?php
+$contents = '<';
+foreach ($users as $row) {
+ echo '<li><strong>'
+ . SemanticScuttle_Model_UserArray::getName($row) . '</strong>'
+ . ' (<a href="' . createURL('profile', $row['username']) . '">'
+ . T_('profile') . '</a> '
+ . T_('created in') . ' '
+ . date('M Y', strtotime($row['uDatetime'])) . ')'
+ . ' : <a href="' . createURL('bookmarks', $row['username']).'">'
+ . T_('bookmarks') . '</a></li>';
+}
+?>
+</ul>
+</p>
+
+<?php
+}
+$this->includeTemplate($GLOBALS['bottom_include']);
+?>
diff --git a/www/themes/pico/css/pico.min.css b/www/themes/pico/css/pico.min.css
new file mode 100644
index 0000000..5928ed7
--- /dev/null
+++ b/www/themes/pico/css/pico.min.css
@@ -0,0 +1,4 @@
+@charset "UTF-8";/*!
+ * Pico CSS ✨ v2.0.6 (https://picocss.com)
+ * Copyright 2019-2024 - Licensed under MIT
+ */:root{--pico-font-family-emoji:"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--pico-font-family-sans-serif:system-ui,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,Helvetica,Arial,"Helvetica Neue",sans-serif,var(--pico-font-family-emoji);--pico-font-family-monospace:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace,var(--pico-font-family-emoji);--pico-font-family:var(--pico-font-family-sans-serif);--pico-line-height:1.5;--pico-font-weight:400;--pico-font-size:100%;--pico-text-underline-offset:0.1rem;--pico-border-radius:0.25rem;--pico-border-width:0.0625rem;--pico-outline-width:0.125rem;--pico-transition:0.2s ease-in-out;--pico-spacing:1rem;--pico-typography-spacing-vertical:1rem;--pico-block-spacing-vertical:var(--pico-spacing);--pico-block-spacing-horizontal:var(--pico-spacing);--pico-grid-column-gap:var(--pico-spacing);--pico-grid-row-gap:var(--pico-spacing);--pico-form-element-spacing-vertical:0.75rem;--pico-form-element-spacing-horizontal:1rem;--pico-group-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-group-box-shadow-focus-with-button:0 0 0 var(--pico-outline-width) var(--pico-primary-focus);--pico-group-box-shadow-focus-with-input:0 0 0 0.0625rem var(--pico-form-element-border-color);--pico-modal-overlay-backdrop-filter:blur(0.375rem);--pico-nav-element-spacing-vertical:1rem;--pico-nav-element-spacing-horizontal:0.5rem;--pico-nav-link-spacing-vertical:0.5rem;--pico-nav-link-spacing-horizontal:0.5rem;--pico-nav-breadcrumb-divider:">";--pico-icon-checkbox:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-minus:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='5' y1='12' x2='19' y2='12'%3E%3C/line%3E%3C/svg%3E");--pico-icon-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-date:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E");--pico-icon-time:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cpolyline points='12 6 12 12 16 14'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-search:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E");--pico-icon-close:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E");--pico-icon-loading:url("data:image/svg+xml,%3Csvg fill='none' height='24' width='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg' %3E%3Cstyle%3E g %7B animation: rotate 2s linear infinite; transform-origin: center center; %7D circle %7B stroke-dasharray: 75,100; stroke-dashoffset: -5; animation: dash 1.5s ease-in-out infinite; stroke-linecap: round; %7D @keyframes rotate %7B 0%25 %7B transform: rotate(0deg); %7D 100%25 %7B transform: rotate(360deg); %7D %7D @keyframes dash %7B 0%25 %7B stroke-dasharray: 1,100; stroke-dashoffset: 0; %7D 50%25 %7B stroke-dasharray: 44.5,100; stroke-dashoffset: -17.5; %7D 100%25 %7B stroke-dasharray: 44.5,100; stroke-dashoffset: -62; %7D %7D %3C/style%3E%3Cg%3E%3Ccircle cx='12' cy='12' r='10' fill='none' stroke='rgb(136, 145, 164)' stroke-width='4' /%3E%3C/g%3E%3C/svg%3E")}@media (min-width:576px){:root{--pico-font-size:106.25%}}@media (min-width:768px){:root{--pico-font-size:112.5%}}@media (min-width:1024px){:root{--pico-font-size:118.75%}}@media (min-width:1280px){:root{--pico-font-size:125%}}@media (min-width:1536px){:root{--pico-font-size:131.25%}}a{--pico-text-decoration:underline}a.contrast,a.secondary{--pico-text-decoration:underline}small{--pico-font-size:0.875em}h1,h2,h3,h4,h5,h6{--pico-font-weight:700}h1{--pico-font-size:2rem;--pico-line-height:1.125;--pico-typography-spacing-top:3rem}h2{--pico-font-size:1.75rem;--pico-line-height:1.15;--pico-typography-spacing-top:2.625rem}h3{--pico-font-size:1.5rem;--pico-line-height:1.175;--pico-typography-spacing-top:2.25rem}h4{--pico-font-size:1.25rem;--pico-line-height:1.2;--pico-typography-spacing-top:1.874rem}h5{--pico-font-size:1.125rem;--pico-line-height:1.225;--pico-typography-spacing-top:1.6875rem}h6{--pico-font-size:1rem;--pico-line-height:1.25;--pico-typography-spacing-top:1.5rem}tfoot td,tfoot th,thead td,thead th{--pico-font-weight:600;--pico-border-width:0.1875rem}code,kbd,pre,samp{--pico-font-family:var(--pico-font-family-monospace)}kbd{--pico-font-weight:bolder}:where(select,textarea),input:not([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]){--pico-outline-width:0.0625rem}[type=search]{--pico-border-radius:5rem}[type=checkbox],[type=radio]{--pico-border-width:0.125rem}[type=checkbox][role=switch]{--pico-border-width:0.1875rem}details.dropdown summary:not([role=button]){--pico-outline-width:0.0625rem}nav details.dropdown summary:focus-visible{--pico-outline-width:0.125rem}[role=search]{--pico-border-radius:5rem}[role=group]:has(button.secondary:focus,[type=submit].secondary:focus,[type=button].secondary:focus,[role=button].secondary:focus),[role=search]:has(button.secondary:focus,[type=submit].secondary:focus,[type=button].secondary:focus,[role=button].secondary:focus){--pico-group-box-shadow-focus-with-button:0 0 0 var(--pico-outline-width) var(--pico-secondary-focus)}[role=group]:has(button.contrast:focus,[type=submit].contrast:focus,[type=button].contrast:focus,[role=button].contrast:focus),[role=search]:has(button.contrast:focus,[type=submit].contrast:focus,[type=button].contrast:focus,[role=button].contrast:focus){--pico-group-box-shadow-focus-with-button:0 0 0 var(--pico-outline-width) var(--pico-contrast-focus)}[role=group] [role=button],[role=group] [type=button],[role=group] [type=submit],[role=group] button,[role=search] [role=button],[role=search] [type=button],[role=search] [type=submit],[role=search] button{--pico-form-element-spacing-horizontal:2rem}details summary[role=button]:not(.outline)::after{filter:brightness(0) invert(1)}[aria-busy=true]:not(input,select,textarea):is(button,[type=submit],[type=button],[type=reset],[role=button]):not(.outline)::before{filter:brightness(0) invert(1)}:root:not([data-theme=dark]),[data-theme=light]{--pico-background-color:#fff;--pico-color:#373c44;--pico-text-selection-color:rgba(2, 154, 232, 0.25);--pico-muted-color:#646b79;--pico-muted-border-color:#e7eaf0;--pico-primary:#0172ad;--pico-primary-background:#0172ad;--pico-primary-border:var(--pico-primary-background);--pico-primary-underline:rgba(1, 114, 173, 0.5);--pico-primary-hover:#015887;--pico-primary-hover-background:#02659a;--pico-primary-hover-border:var(--pico-primary-hover-background);--pico-primary-hover-underline:var(--pico-primary-hover);--pico-primary-focus:rgba(2, 154, 232, 0.5);--pico-primary-inverse:#fff;--pico-secondary:#5d6b89;--pico-secondary-background:#525f7a;--pico-secondary-border:var(--pico-secondary-background);--pico-secondary-underline:rgba(93, 107, 137, 0.5);--pico-secondary-hover:#48536b;--pico-secondary-hover-background:#48536b;--pico-secondary-hover-border:var(--pico-secondary-hover-background);--pico-secondary-hover-underline:var(--pico-secondary-hover);--pico-secondary-focus:rgba(93, 107, 137, 0.25);--pico-secondary-inverse:#fff;--pico-contrast:#181c25;--pico-contrast-background:#181c25;--pico-contrast-border:var(--pico-contrast-background);--pico-contrast-underline:rgba(24, 28, 37, 0.5);--pico-contrast-hover:#000;--pico-contrast-hover-background:#000;--pico-contrast-hover-border:var(--pico-contrast-hover-background);--pico-contrast-hover-underline:var(--pico-secondary-hover);--pico-contrast-focus:rgba(93, 107, 137, 0.25);--pico-contrast-inverse:#fff;--pico-box-shadow:0.0145rem 0.029rem 0.174rem rgba(129, 145, 181, 0.01698),0.0335rem 0.067rem 0.402rem rgba(129, 145, 181, 0.024),0.0625rem 0.125rem 0.75rem rgba(129, 145, 181, 0.03),0.1125rem 0.225rem 1.35rem rgba(129, 145, 181, 0.036),0.2085rem 0.417rem 2.502rem rgba(129, 145, 181, 0.04302),0.5rem 1rem 6rem rgba(129, 145, 181, 0.06),0 0 0 0.0625rem rgba(129, 145, 181, 0.015);--pico-h1-color:#2d3138;--pico-h2-color:#373c44;--pico-h3-color:#424751;--pico-h4-color:#4d535e;--pico-h5-color:#5c6370;--pico-h6-color:#646b79;--pico-mark-background-color:#fde7c0;--pico-mark-color:#0f1114;--pico-ins-color:#1d6a54;--pico-del-color:#883935;--pico-blockquote-border-color:var(--pico-muted-border-color);--pico-blockquote-footer-color:var(--pico-muted-color);--pico-button-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-button-hover-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-table-border-color:var(--pico-muted-border-color);--pico-table-row-stripped-background-color:rgba(111, 120, 135, 0.0375);--pico-code-background-color:#f3f5f7;--pico-code-color:#646b79;--pico-code-kbd-background-color:var(--pico-color);--pico-code-kbd-color:var(--pico-background-color);--pico-form-element-background-color:#fbfcfc;--pico-form-element-selected-background-color:#dfe3eb;--pico-form-element-border-color:#cfd5e2;--pico-form-element-color:#23262c;--pico-form-element-placeholder-color:var(--pico-muted-color);--pico-form-element-active-background-color:#fff;--pico-form-element-active-border-color:var(--pico-primary-border);--pico-form-element-focus-color:var(--pico-primary-border);--pico-form-element-disabled-opacity:0.5;--pico-form-element-invalid-border-color:#b86a6b;--pico-form-element-invalid-active-border-color:#c84f48;--pico-form-element-invalid-focus-color:var(--pico-form-element-invalid-active-border-color);--pico-form-element-valid-border-color:#4c9b8a;--pico-form-element-valid-active-border-color:#279977;--pico-form-element-valid-focus-color:var(--pico-form-element-valid-active-border-color);--pico-switch-background-color:#bfc7d9;--pico-switch-checked-background-color:var(--pico-primary-background);--pico-switch-color:#fff;--pico-switch-thumb-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-range-border-color:#dfe3eb;--pico-range-active-border-color:#bfc7d9;--pico-range-thumb-border-color:var(--pico-background-color);--pico-range-thumb-color:var(--pico-secondary-background);--pico-range-thumb-active-color:var(--pico-primary-background);--pico-accordion-border-color:var(--pico-muted-border-color);--pico-accordion-active-summary-color:var(--pico-primary-hover);--pico-accordion-close-summary-color:var(--pico-color);--pico-accordion-open-summary-color:var(--pico-muted-color);--pico-card-background-color:var(--pico-background-color);--pico-card-border-color:var(--pico-muted-border-color);--pico-card-box-shadow:var(--pico-box-shadow);--pico-card-sectioning-background-color:#fbfcfc;--pico-dropdown-background-color:#fff;--pico-dropdown-border-color:#eff1f4;--pico-dropdown-box-shadow:var(--pico-box-shadow);--pico-dropdown-color:var(--pico-color);--pico-dropdown-hover-background-color:#eff1f4;--pico-loading-spinner-opacity:0.5;--pico-modal-overlay-background-color:rgba(232, 234, 237, 0.75);--pico-progress-background-color:#dfe3eb;--pico-progress-color:var(--pico-primary-background);--pico-tooltip-background-color:var(--pico-contrast-background);--pico-tooltip-color:var(--pico-contrast-inverse);--pico-icon-valid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(76, 155, 138)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-invalid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(200, 79, 72)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");color-scheme:light}:root:not([data-theme=dark]) input:is([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]),[data-theme=light] input:is([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]){--pico-form-element-focus-color:var(--pico-primary-focus)}@media only screen and (prefers-color-scheme:dark){:root:not([data-theme]){--pico-background-color:#13171f;--pico-color:#c2c7d0;--pico-text-selection-color:rgba(1, 170, 255, 0.1875);--pico-muted-color:#7b8495;--pico-muted-border-color:#202632;--pico-primary:#01aaff;--pico-primary-background:#0172ad;--pico-primary-border:var(--pico-primary-background);--pico-primary-underline:rgba(1, 170, 255, 0.5);--pico-primary-hover:#79c0ff;--pico-primary-hover-background:#017fc0;--pico-primary-hover-border:var(--pico-primary-hover-background);--pico-primary-hover-underline:var(--pico-primary-hover);--pico-primary-focus:rgba(1, 170, 255, 0.375);--pico-primary-inverse:#fff;--pico-secondary:#969eaf;--pico-secondary-background:#525f7a;--pico-secondary-border:var(--pico-secondary-background);--pico-secondary-underline:rgba(150, 158, 175, 0.5);--pico-secondary-hover:#b3b9c5;--pico-secondary-hover-background:#5d6b89;--pico-secondary-hover-border:var(--pico-secondary-hover-background);--pico-secondary-hover-underline:var(--pico-secondary-hover);--pico-secondary-focus:rgba(144, 158, 190, 0.25);--pico-secondary-inverse:#fff;--pico-contrast:#dfe3eb;--pico-contrast-background:#eff1f4;--pico-contrast-border:var(--pico-contrast-background);--pico-contrast-underline:rgba(223, 227, 235, 0.5);--pico-contrast-hover:#fff;--pico-contrast-hover-background:#fff;--pico-contrast-hover-border:var(--pico-contrast-hover-background);--pico-contrast-hover-underline:var(--pico-contrast-hover);--pico-contrast-focus:rgba(207, 213, 226, 0.25);--pico-contrast-inverse:#000;--pico-box-shadow:0.0145rem 0.029rem 0.174rem rgba(7, 9, 12, 0.01698),0.0335rem 0.067rem 0.402rem rgba(7, 9, 12, 0.024),0.0625rem 0.125rem 0.75rem rgba(7, 9, 12, 0.03),0.1125rem 0.225rem 1.35rem rgba(7, 9, 12, 0.036),0.2085rem 0.417rem 2.502rem rgba(7, 9, 12, 0.04302),0.5rem 1rem 6rem rgba(7, 9, 12, 0.06),0 0 0 0.0625rem rgba(7, 9, 12, 0.015);--pico-h1-color:#f0f1f3;--pico-h2-color:#e0e3e7;--pico-h3-color:#c2c7d0;--pico-h4-color:#b3b9c5;--pico-h5-color:#a4acba;--pico-h6-color:#8891a4;--pico-mark-background-color:#014063;--pico-mark-color:#fff;--pico-ins-color:#62af9a;--pico-del-color:#ce7e7b;--pico-blockquote-border-color:var(--pico-muted-border-color);--pico-blockquote-footer-color:var(--pico-muted-color);--pico-button-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-button-hover-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-table-border-color:var(--pico-muted-border-color);--pico-table-row-stripped-background-color:rgba(111, 120, 135, 0.0375);--pico-code-background-color:#1a1f28;--pico-code-color:#8891a4;--pico-code-kbd-background-color:var(--pico-color);--pico-code-kbd-color:var(--pico-background-color);--pico-form-element-background-color:#1c212c;--pico-form-element-selected-background-color:#2a3140;--pico-form-element-border-color:#2a3140;--pico-form-element-color:#e0e3e7;--pico-form-element-placeholder-color:#8891a4;--pico-form-element-active-background-color:#1a1f28;--pico-form-element-active-border-color:var(--pico-primary-border);--pico-form-element-focus-color:var(--pico-primary-border);--pico-form-element-disabled-opacity:0.5;--pico-form-element-invalid-border-color:#964a50;--pico-form-element-invalid-active-border-color:#b7403b;--pico-form-element-invalid-focus-color:var(--pico-form-element-invalid-active-border-color);--pico-form-element-valid-border-color:#2a7b6f;--pico-form-element-valid-active-border-color:#16896a;--pico-form-element-valid-focus-color:var(--pico-form-element-valid-active-border-color);--pico-switch-background-color:#333c4e;--pico-switch-checked-background-color:var(--pico-primary-background);--pico-switch-color:#fff;--pico-switch-thumb-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-range-border-color:#202632;--pico-range-active-border-color:#2a3140;--pico-range-thumb-border-color:var(--pico-background-color);--pico-range-thumb-color:var(--pico-secondary-background);--pico-range-thumb-active-color:var(--pico-primary-background);--pico-accordion-border-color:var(--pico-muted-border-color);--pico-accordion-active-summary-color:var(--pico-primary-hover);--pico-accordion-close-summary-color:var(--pico-color);--pico-accordion-open-summary-color:var(--pico-muted-color);--pico-card-background-color:#181c25;--pico-card-border-color:var(--pico-card-background-color);--pico-card-box-shadow:var(--pico-box-shadow);--pico-card-sectioning-background-color:#1a1f28;--pico-dropdown-background-color:#181c25;--pico-dropdown-border-color:#202632;--pico-dropdown-box-shadow:var(--pico-box-shadow);--pico-dropdown-color:var(--pico-color);--pico-dropdown-hover-background-color:#202632;--pico-loading-spinner-opacity:0.5;--pico-modal-overlay-background-color:rgba(8, 9, 10, 0.75);--pico-progress-background-color:#202632;--pico-progress-color:var(--pico-primary-background);--pico-tooltip-background-color:var(--pico-contrast-background);--pico-tooltip-color:var(--pico-contrast-inverse);--pico-icon-valid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(42, 123, 111)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-invalid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(150, 74, 80)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");color-scheme:dark}:root:not([data-theme]) input:is([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]){--pico-form-element-focus-color:var(--pico-primary-focus)}:root:not([data-theme]) details summary[role=button].contrast:not(.outline)::after{filter:brightness(0)}:root:not([data-theme]) [aria-busy=true]:not(input,select,textarea).contrast:is(button,[type=submit],[type=button],[type=reset],[role=button]):not(.outline)::before{filter:brightness(0)}}[data-theme=dark]{--pico-background-color:#13171f;--pico-color:#c2c7d0;--pico-text-selection-color:rgba(1, 170, 255, 0.1875);--pico-muted-color:#7b8495;--pico-muted-border-color:#202632;--pico-primary:#01aaff;--pico-primary-background:#0172ad;--pico-primary-border:var(--pico-primary-background);--pico-primary-underline:rgba(1, 170, 255, 0.5);--pico-primary-hover:#79c0ff;--pico-primary-hover-background:#017fc0;--pico-primary-hover-border:var(--pico-primary-hover-background);--pico-primary-hover-underline:var(--pico-primary-hover);--pico-primary-focus:rgba(1, 170, 255, 0.375);--pico-primary-inverse:#fff;--pico-secondary:#969eaf;--pico-secondary-background:#525f7a;--pico-secondary-border:var(--pico-secondary-background);--pico-secondary-underline:rgba(150, 158, 175, 0.5);--pico-secondary-hover:#b3b9c5;--pico-secondary-hover-background:#5d6b89;--pico-secondary-hover-border:var(--pico-secondary-hover-background);--pico-secondary-hover-underline:var(--pico-secondary-hover);--pico-secondary-focus:rgba(144, 158, 190, 0.25);--pico-secondary-inverse:#fff;--pico-contrast:#dfe3eb;--pico-contrast-background:#eff1f4;--pico-contrast-border:var(--pico-contrast-background);--pico-contrast-underline:rgba(223, 227, 235, 0.5);--pico-contrast-hover:#fff;--pico-contrast-hover-background:#fff;--pico-contrast-hover-border:var(--pico-contrast-hover-background);--pico-contrast-hover-underline:var(--pico-contrast-hover);--pico-contrast-focus:rgba(207, 213, 226, 0.25);--pico-contrast-inverse:#000;--pico-box-shadow:0.0145rem 0.029rem 0.174rem rgba(7, 9, 12, 0.01698),0.0335rem 0.067rem 0.402rem rgba(7, 9, 12, 0.024),0.0625rem 0.125rem 0.75rem rgba(7, 9, 12, 0.03),0.1125rem 0.225rem 1.35rem rgba(7, 9, 12, 0.036),0.2085rem 0.417rem 2.502rem rgba(7, 9, 12, 0.04302),0.5rem 1rem 6rem rgba(7, 9, 12, 0.06),0 0 0 0.0625rem rgba(7, 9, 12, 0.015);--pico-h1-color:#f0f1f3;--pico-h2-color:#e0e3e7;--pico-h3-color:#c2c7d0;--pico-h4-color:#b3b9c5;--pico-h5-color:#a4acba;--pico-h6-color:#8891a4;--pico-mark-background-color:#014063;--pico-mark-color:#fff;--pico-ins-color:#62af9a;--pico-del-color:#ce7e7b;--pico-blockquote-border-color:var(--pico-muted-border-color);--pico-blockquote-footer-color:var(--pico-muted-color);--pico-button-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-button-hover-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-table-border-color:var(--pico-muted-border-color);--pico-table-row-stripped-background-color:rgba(111, 120, 135, 0.0375);--pico-code-background-color:#1a1f28;--pico-code-color:#8891a4;--pico-code-kbd-background-color:var(--pico-color);--pico-code-kbd-color:var(--pico-background-color);--pico-form-element-background-color:#1c212c;--pico-form-element-selected-background-color:#2a3140;--pico-form-element-border-color:#2a3140;--pico-form-element-color:#e0e3e7;--pico-form-element-placeholder-color:#8891a4;--pico-form-element-active-background-color:#1a1f28;--pico-form-element-active-border-color:var(--pico-primary-border);--pico-form-element-focus-color:var(--pico-primary-border);--pico-form-element-disabled-opacity:0.5;--pico-form-element-invalid-border-color:#964a50;--pico-form-element-invalid-active-border-color:#b7403b;--pico-form-element-invalid-focus-color:var(--pico-form-element-invalid-active-border-color);--pico-form-element-valid-border-color:#2a7b6f;--pico-form-element-valid-active-border-color:#16896a;--pico-form-element-valid-focus-color:var(--pico-form-element-valid-active-border-color);--pico-switch-background-color:#333c4e;--pico-switch-checked-background-color:var(--pico-primary-background);--pico-switch-color:#fff;--pico-switch-thumb-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-range-border-color:#202632;--pico-range-active-border-color:#2a3140;--pico-range-thumb-border-color:var(--pico-background-color);--pico-range-thumb-color:var(--pico-secondary-background);--pico-range-thumb-active-color:var(--pico-primary-background);--pico-accordion-border-color:var(--pico-muted-border-color);--pico-accordion-active-summary-color:var(--pico-primary-hover);--pico-accordion-close-summary-color:var(--pico-color);--pico-accordion-open-summary-color:var(--pico-muted-color);--pico-card-background-color:#181c25;--pico-card-border-color:var(--pico-card-background-color);--pico-card-box-shadow:var(--pico-box-shadow);--pico-card-sectioning-background-color:#1a1f28;--pico-dropdown-background-color:#181c25;--pico-dropdown-border-color:#202632;--pico-dropdown-box-shadow:var(--pico-box-shadow);--pico-dropdown-color:var(--pico-color);--pico-dropdown-hover-background-color:#202632;--pico-loading-spinner-opacity:0.5;--pico-modal-overlay-background-color:rgba(8, 9, 10, 0.75);--pico-progress-background-color:#202632;--pico-progress-color:var(--pico-primary-background);--pico-tooltip-background-color:var(--pico-contrast-background);--pico-tooltip-color:var(--pico-contrast-inverse);--pico-icon-valid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(42, 123, 111)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-invalid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(150, 74, 80)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");color-scheme:dark}[data-theme=dark] input:is([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]){--pico-form-element-focus-color:var(--pico-primary-focus)}[data-theme=dark] details summary[role=button].contrast:not(.outline)::after{filter:brightness(0)}[data-theme=dark] [aria-busy=true]:not(input,select,textarea).contrast:is(button,[type=submit],[type=button],[type=reset],[role=button]):not(.outline)::before{filter:brightness(0)}[type=checkbox],[type=radio],[type=range],progress{accent-color:var(--pico-primary)}*,::after,::before{box-sizing:border-box;background-repeat:no-repeat}::after,::before{text-decoration:inherit;vertical-align:inherit}:where(:root){-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--pico-background-color);color:var(--pico-color);font-weight:var(--pico-font-weight);font-size:var(--pico-font-size);line-height:var(--pico-line-height);font-family:var(--pico-font-family);text-underline-offset:var(--pico-text-underline-offset);text-rendering:optimizeLegibility;overflow-wrap:break-word;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{width:100%;margin:0}main{display:block}body>footer,body>header,body>main{padding-block:var(--pico-block-spacing-vertical)}section{margin-bottom:var(--pico-block-spacing-vertical)}.container,.container-fluid{width:100%;margin-right:auto;margin-left:auto;padding-right:var(--pico-spacing);padding-left:var(--pico-spacing)}@media (min-width:576px){.container{max-width:510px;padding-right:0;padding-left:0}}@media (min-width:768px){.container{max-width:700px}}@media (min-width:1024px){.container{max-width:950px}}@media (min-width:1280px){.container{max-width:1200px}}@media (min-width:1536px){.container{max-width:1450px}}.grid{grid-column-gap:var(--pico-grid-column-gap);grid-row-gap:var(--pico-grid-row-gap);display:grid;grid-template-columns:1fr}@media (min-width:768px){.grid{grid-template-columns:repeat(auto-fit,minmax(0%,1fr))}}.grid>*{min-width:0}.overflow-auto{overflow:auto}b,strong{font-weight:bolder}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}address,blockquote,dl,ol,p,pre,table,ul{margin-top:0;margin-bottom:var(--pico-typography-spacing-vertical);color:var(--pico-color);font-style:normal;font-weight:var(--pico-font-weight)}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:var(--pico-typography-spacing-vertical);color:var(--pico-color);font-weight:var(--pico-font-weight);font-size:var(--pico-font-size);line-height:var(--pico-line-height);font-family:var(--pico-font-family)}h1{--pico-color:var(--pico-h1-color)}h2{--pico-color:var(--pico-h2-color)}h3{--pico-color:var(--pico-h3-color)}h4{--pico-color:var(--pico-h4-color)}h5{--pico-color:var(--pico-h5-color)}h6{--pico-color:var(--pico-h6-color)}:where(article,address,blockquote,dl,figure,form,ol,p,pre,table,ul)~:is(h1,h2,h3,h4,h5,h6){margin-top:var(--pico-typography-spacing-top)}p{margin-bottom:var(--pico-typography-spacing-vertical)}hgroup{margin-bottom:var(--pico-typography-spacing-vertical)}hgroup>*{margin-top:0;margin-bottom:0}hgroup>:not(:first-child):last-child{--pico-color:var(--pico-muted-color);--pico-font-weight:unset;font-size:1rem}:where(ol,ul) li{margin-bottom:calc(var(--pico-typography-spacing-vertical) * .25)}:where(dl,ol,ul) :where(dl,ol,ul){margin:0;margin-top:calc(var(--pico-typography-spacing-vertical) * .25)}ul li{list-style:square}mark{padding:.125rem .25rem;background-color:var(--pico-mark-background-color);color:var(--pico-mark-color);vertical-align:baseline}blockquote{display:block;margin:var(--pico-typography-spacing-vertical) 0;padding:var(--pico-spacing);border-right:none;border-left:.25rem solid var(--pico-blockquote-border-color);border-inline-start:0.25rem solid var(--pico-blockquote-border-color);border-inline-end:none}blockquote footer{margin-top:calc(var(--pico-typography-spacing-vertical) * .5);color:var(--pico-blockquote-footer-color)}abbr[title]{border-bottom:1px dotted;text-decoration:none;cursor:help}ins{color:var(--pico-ins-color);text-decoration:none}del{color:var(--pico-del-color)}::-moz-selection{background-color:var(--pico-text-selection-color)}::selection{background-color:var(--pico-text-selection-color)}:where(a:not([role=button])),[role=link]{--pico-color:var(--pico-primary);--pico-background-color:transparent;--pico-underline:var(--pico-primary-underline);outline:0;background-color:var(--pico-background-color);color:var(--pico-color);-webkit-text-decoration:var(--pico-text-decoration);text-decoration:var(--pico-text-decoration);text-decoration-color:var(--pico-underline);text-underline-offset:0.125em;transition:background-color var(--pico-transition),color var(--pico-transition),box-shadow var(--pico-transition),-webkit-text-decoration var(--pico-transition);transition:background-color var(--pico-transition),color var(--pico-transition),text-decoration var(--pico-transition),box-shadow var(--pico-transition);transition:background-color var(--pico-transition),color var(--pico-transition),text-decoration var(--pico-transition),box-shadow var(--pico-transition),-webkit-text-decoration var(--pico-transition)}:where(a:not([role=button])):is([aria-current]:not([aria-current=false]),:hover,:active,:focus),[role=link]:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){--pico-color:var(--pico-primary-hover);--pico-underline:var(--pico-primary-hover-underline);--pico-text-decoration:underline}:where(a:not([role=button])):focus-visible,[role=link]:focus-visible{box-shadow:0 0 0 var(--pico-outline-width) var(--pico-primary-focus)}:where(a:not([role=button])).secondary,[role=link].secondary{--pico-color:var(--pico-secondary);--pico-underline:var(--pico-secondary-underline)}:where(a:not([role=button])).secondary:is([aria-current]:not([aria-current=false]),:hover,:active,:focus),[role=link].secondary:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){--pico-color:var(--pico-secondary-hover);--pico-underline:var(--pico-secondary-hover-underline)}:where(a:not([role=button])).contrast,[role=link].contrast{--pico-color:var(--pico-contrast);--pico-underline:var(--pico-contrast-underline)}:where(a:not([role=button])).contrast:is([aria-current]:not([aria-current=false]),:hover,:active,:focus),[role=link].contrast:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){--pico-color:var(--pico-contrast-hover);--pico-underline:var(--pico-contrast-hover-underline)}a[role=button]{display:inline-block}button{margin:0;overflow:visible;font-family:inherit;text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[role=button],[type=button],[type=file]::file-selector-button,[type=reset],[type=submit],button{--pico-background-color:var(--pico-primary-background);--pico-border-color:var(--pico-primary-border);--pico-color:var(--pico-primary-inverse);--pico-box-shadow:var(--pico-button-box-shadow, 0 0 0 rgba(0, 0, 0, 0));padding:var(--pico-form-element-spacing-vertical) var(--pico-form-element-spacing-horizontal);border:var(--pico-border-width) solid var(--pico-border-color);border-radius:var(--pico-border-radius);outline:0;background-color:var(--pico-background-color);box-shadow:var(--pico-box-shadow);color:var(--pico-color);font-weight:var(--pico-font-weight);font-size:1rem;line-height:var(--pico-line-height);text-align:center;text-decoration:none;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background-color var(--pico-transition),border-color var(--pico-transition),color var(--pico-transition),box-shadow var(--pico-transition)}[role=button]:is(:hover,:active,:focus),[role=button]:is([aria-current]:not([aria-current=false])),[type=button]:is(:hover,:active,:focus),[type=button]:is([aria-current]:not([aria-current=false])),[type=file]::file-selector-button:is(:hover,:active,:focus),[type=file]::file-selector-button:is([aria-current]:not([aria-current=false])),[type=reset]:is(:hover,:active,:focus),[type=reset]:is([aria-current]:not([aria-current=false])),[type=submit]:is(:hover,:active,:focus),[type=submit]:is([aria-current]:not([aria-current=false])),button:is(:hover,:active,:focus),button:is([aria-current]:not([aria-current=false])){--pico-background-color:var(--pico-primary-hover-background);--pico-border-color:var(--pico-primary-hover-border);--pico-box-shadow:var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0));--pico-color:var(--pico-primary-inverse)}[role=button]:focus,[role=button]:is([aria-current]:not([aria-current=false])):focus,[type=button]:focus,[type=button]:is([aria-current]:not([aria-current=false])):focus,[type=file]::file-selector-button:focus,[type=file]::file-selector-button:is([aria-current]:not([aria-current=false])):focus,[type=reset]:focus,[type=reset]:is([aria-current]:not([aria-current=false])):focus,[type=submit]:focus,[type=submit]:is([aria-current]:not([aria-current=false])):focus,button:focus,button:is([aria-current]:not([aria-current=false])):focus{--pico-box-shadow:var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),0 0 0 var(--pico-outline-width) var(--pico-primary-focus)}[type=button],[type=reset],[type=submit]{margin-bottom:var(--pico-spacing)}:is(button,[type=submit],[type=button],[role=button]).secondary,[type=file]::file-selector-button,[type=reset]{--pico-background-color:var(--pico-secondary-background);--pico-border-color:var(--pico-secondary-border);--pico-color:var(--pico-secondary-inverse);cursor:pointer}:is(button,[type=submit],[type=button],[role=button]).secondary:is([aria-current]:not([aria-current=false]),:hover,:active,:focus),[type=file]::file-selector-button:is([aria-current]:not([aria-current=false]),:hover,:active,:focus),[type=reset]:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){--pico-background-color:var(--pico-secondary-hover-background);--pico-border-color:var(--pico-secondary-hover-border);--pico-color:var(--pico-secondary-inverse)}:is(button,[type=submit],[type=button],[role=button]).secondary:focus,:is(button,[type=submit],[type=button],[role=button]).secondary:is([aria-current]:not([aria-current=false])):focus,[type=file]::file-selector-button:focus,[type=file]::file-selector-button:is([aria-current]:not([aria-current=false])):focus,[type=reset]:focus,[type=reset]:is([aria-current]:not([aria-current=false])):focus{--pico-box-shadow:var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),0 0 0 var(--pico-outline-width) var(--pico-secondary-focus)}:is(button,[type=submit],[type=button],[role=button]).contrast{--pico-background-color:var(--pico-contrast-background);--pico-border-color:var(--pico-contrast-border);--pico-color:var(--pico-contrast-inverse)}:is(button,[type=submit],[type=button],[role=button]).contrast:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){--pico-background-color:var(--pico-contrast-hover-background);--pico-border-color:var(--pico-contrast-hover-border);--pico-color:var(--pico-contrast-inverse)}:is(button,[type=submit],[type=button],[role=button]).contrast:focus,:is(button,[type=submit],[type=button],[role=button]).contrast:is([aria-current]:not([aria-current=false])):focus{--pico-box-shadow:var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),0 0 0 var(--pico-outline-width) var(--pico-contrast-focus)}:is(button,[type=submit],[type=button],[role=button]).outline,[type=reset].outline{--pico-background-color:transparent;--pico-color:var(--pico-primary);--pico-border-color:var(--pico-primary)}:is(button,[type=submit],[type=button],[role=button]).outline:is([aria-current]:not([aria-current=false]),:hover,:active,:focus),[type=reset].outline:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){--pico-background-color:transparent;--pico-color:var(--pico-primary-hover);--pico-border-color:var(--pico-primary-hover)}:is(button,[type=submit],[type=button],[role=button]).outline.secondary,[type=reset].outline{--pico-color:var(--pico-secondary);--pico-border-color:var(--pico-secondary)}:is(button,[type=submit],[type=button],[role=button]).outline.secondary:is([aria-current]:not([aria-current=false]),:hover,:active,:focus),[type=reset].outline:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){--pico-color:var(--pico-secondary-hover);--pico-border-color:var(--pico-secondary-hover)}:is(button,[type=submit],[type=button],[role=button]).outline.contrast{--pico-color:var(--pico-contrast);--pico-border-color:var(--pico-contrast)}:is(button,[type=submit],[type=button],[role=button]).outline.contrast:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){--pico-color:var(--pico-contrast-hover);--pico-border-color:var(--pico-contrast-hover)}:where(button,[type=submit],[type=reset],[type=button],[role=button])[disabled],:where(fieldset[disabled]) :is(button,[type=submit],[type=button],[type=reset],[role=button]){opacity:.5;pointer-events:none}:where(table){width:100%;border-collapse:collapse;border-spacing:0;text-indent:0}td,th{padding:calc(var(--pico-spacing)/ 2) var(--pico-spacing);border-bottom:var(--pico-border-width) solid var(--pico-table-border-color);background-color:var(--pico-background-color);color:var(--pico-color);font-weight:var(--pico-font-weight);text-align:left;text-align:start}tfoot td,tfoot th{border-top:var(--pico-border-width) solid var(--pico-table-border-color);border-bottom:0}table.striped tbody tr:nth-child(odd) td,table.striped tbody tr:nth-child(odd) th{background-color:var(--pico-table-row-stripped-background-color)}:where(audio,canvas,iframe,img,svg,video){vertical-align:middle}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}:where(iframe){border-style:none}img{max-width:100%;height:auto;border-style:none}:where(svg:not([fill])){fill:currentColor}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-size:.875em;font-family:var(--pico-font-family)}pre code{font-size:inherit;font-family:inherit}pre{-ms-overflow-style:scrollbar;overflow:auto}code,kbd,pre{border-radius:var(--pico-border-radius);background:var(--pico-code-background-color);color:var(--pico-code-color);font-weight:var(--pico-font-weight);line-height:initial}code,kbd{display:inline-block;padding:.375rem}pre{display:block;margin-bottom:var(--pico-spacing);overflow-x:auto}pre>code{display:block;padding:var(--pico-spacing);background:0 0;line-height:var(--pico-line-height)}kbd{background-color:var(--pico-code-kbd-background-color);color:var(--pico-code-kbd-color);vertical-align:baseline}figure{display:block;margin:0;padding:0}figure figcaption{padding:calc(var(--pico-spacing) * .5) 0;color:var(--pico-muted-color)}hr{height:0;margin:var(--pico-typography-spacing-vertical) 0;border:0;border-top:1px solid var(--pico-muted-border-color);color:inherit}[hidden],template{display:none!important}canvas{display:inline-block}input,optgroup,select,textarea{margin:0;font-size:1rem;line-height:var(--pico-line-height);font-family:inherit;letter-spacing:inherit}input{overflow:visible}select{text-transform:none}legend{max-width:100%;padding:0;color:inherit;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{padding:0}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}::-moz-focus-inner{padding:0;border-style:none}:-moz-focusring{outline:0}:-moz-ui-invalid{box-shadow:none}::-ms-expand{display:none}[type=file],[type=range]{padding:0;border-width:0}input:not([type=checkbox],[type=radio],[type=range]){height:calc(1rem * var(--pico-line-height) + var(--pico-form-element-spacing-vertical) * 2 + var(--pico-border-width) * 2)}fieldset{width:100%;margin:0;margin-bottom:var(--pico-spacing);padding:0;border:0}fieldset legend,label{display:block;margin-bottom:calc(var(--pico-spacing) * .375);color:var(--pico-color);font-weight:var(--pico-form-label-font-weight,var(--pico-font-weight))}fieldset legend{margin-bottom:calc(var(--pico-spacing) * .5)}button[type=submit],input:not([type=checkbox],[type=radio]),select,textarea{width:100%}input:not([type=checkbox],[type=radio],[type=range],[type=file]),select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:var(--pico-form-element-spacing-vertical) var(--pico-form-element-spacing-horizontal)}input,select,textarea{--pico-background-color:var(--pico-form-element-background-color);--pico-border-color:var(--pico-form-element-border-color);--pico-color:var(--pico-form-element-color);--pico-box-shadow:none;border:var(--pico-border-width) solid var(--pico-border-color);border-radius:var(--pico-border-radius);outline:0;background-color:var(--pico-background-color);box-shadow:var(--pico-box-shadow);color:var(--pico-color);font-weight:var(--pico-font-weight);transition:background-color var(--pico-transition),border-color var(--pico-transition),color var(--pico-transition),box-shadow var(--pico-transition)}:where(select,textarea):not([readonly]):is(:active,:focus),input:not([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[readonly]):is(:active,:focus){--pico-background-color:var(--pico-form-element-active-background-color)}:where(select,textarea):not([readonly]):is(:active,:focus),input:not([type=submit],[type=button],[type=reset],[role=switch],[readonly]):is(:active,:focus){--pico-border-color:var(--pico-form-element-active-border-color)}:where(select,textarea):not([readonly]):focus,input:not([type=submit],[type=button],[type=reset],[type=range],[type=file],[readonly]):focus{--pico-box-shadow:0 0 0 var(--pico-outline-width) var(--pico-form-element-focus-color)}:where(fieldset[disabled]) :is(input:not([type=submit],[type=button],[type=reset]),select,textarea),input:not([type=submit],[type=button],[type=reset])[disabled],label[aria-disabled=true],select[disabled],textarea[disabled]{opacity:var(--pico-form-element-disabled-opacity);pointer-events:none}label[aria-disabled=true] input[disabled]{opacity:1}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week],[type=range])[aria-invalid]{padding-right:calc(var(--pico-form-element-spacing-horizontal) + 1.5rem)!important;padding-left:var(--pico-form-element-spacing-horizontal);padding-inline-start:var(--pico-form-element-spacing-horizontal)!important;padding-inline-end:calc(var(--pico-form-element-spacing-horizontal) + 1.5rem)!important;background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week],[type=range])[aria-invalid=false]:not(select){background-image:var(--pico-icon-valid)}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week],[type=range])[aria-invalid=true]:not(select){background-image:var(--pico-icon-invalid)}:where(input,select,textarea)[aria-invalid=false]{--pico-border-color:var(--pico-form-element-valid-border-color)}:where(input,select,textarea)[aria-invalid=false]:is(:active,:focus){--pico-border-color:var(--pico-form-element-valid-active-border-color)!important}:where(input,select,textarea)[aria-invalid=false]:is(:active,:focus):not([type=checkbox],[type=radio]){--pico-box-shadow:0 0 0 var(--pico-outline-width) var(--pico-form-element-valid-focus-color)!important}:where(input,select,textarea)[aria-invalid=true]{--pico-border-color:var(--pico-form-element-invalid-border-color)}:where(input,select,textarea)[aria-invalid=true]:is(:active,:focus){--pico-border-color:var(--pico-form-element-invalid-active-border-color)!important}:where(input,select,textarea)[aria-invalid=true]:is(:active,:focus):not([type=checkbox],[type=radio]){--pico-box-shadow:0 0 0 var(--pico-outline-width) var(--pico-form-element-invalid-focus-color)!important}[dir=rtl] :where(input,select,textarea):not([type=checkbox],[type=radio]):is([aria-invalid],[aria-invalid=true],[aria-invalid=false]){background-position:center left .75rem}input::-webkit-input-placeholder,input::placeholder,select:invalid,textarea::-webkit-input-placeholder,textarea::placeholder{color:var(--pico-form-element-placeholder-color);opacity:1}input:not([type=checkbox],[type=radio]),select,textarea{margin-bottom:var(--pico-spacing)}select::-ms-expand{border:0;background-color:transparent}select:not([multiple],[size]){padding-right:calc(var(--pico-form-element-spacing-horizontal) + 1.5rem);padding-left:var(--pico-form-element-spacing-horizontal);padding-inline-start:var(--pico-form-element-spacing-horizontal);padding-inline-end:calc(var(--pico-form-element-spacing-horizontal) + 1.5rem);background-image:var(--pico-icon-chevron);background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}select[multiple] option:checked{background:var(--pico-form-element-selected-background-color);color:var(--pico-form-element-color)}[dir=rtl] select:not([multiple],[size]){background-position:center left .75rem}textarea{display:block;resize:vertical}textarea[aria-invalid]{--pico-icon-height:calc(1rem * var(--pico-line-height) + var(--pico-form-element-spacing-vertical) * 2 + var(--pico-border-width) * 2);background-position:top right .75rem!important;background-size:1rem var(--pico-icon-height)!important}:where(input,select,textarea,fieldset,.grid)+small{display:block;width:100%;margin-top:calc(var(--pico-spacing) * -.75);margin-bottom:var(--pico-spacing);color:var(--pico-muted-color)}:where(input,select,textarea,fieldset,.grid)[aria-invalid=false]+small{color:var(--pico-ins-color)}:where(input,select,textarea,fieldset,.grid)[aria-invalid=true]+small{color:var(--pico-del-color)}label>:where(input,select,textarea){margin-top:calc(var(--pico-spacing) * .25)}label:has([type=checkbox],[type=radio]){width:-moz-fit-content;width:fit-content;cursor:pointer}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1.25em;height:1.25em;margin-top:-.125em;margin-inline-end:.5em;border-width:var(--pico-border-width);vertical-align:middle;cursor:pointer}[type=checkbox]::-ms-check,[type=radio]::-ms-check{display:none}[type=checkbox]:checked,[type=checkbox]:checked:active,[type=checkbox]:checked:focus,[type=radio]:checked,[type=radio]:checked:active,[type=radio]:checked:focus{--pico-background-color:var(--pico-primary-background);--pico-border-color:var(--pico-primary-border);background-image:var(--pico-icon-checkbox);background-position:center;background-size:.75em auto;background-repeat:no-repeat}[type=checkbox]~label,[type=radio]~label{display:inline-block;margin-bottom:0;cursor:pointer}[type=checkbox]~label:not(:last-of-type),[type=radio]~label:not(:last-of-type){margin-inline-end:1em}[type=checkbox]:indeterminate{--pico-background-color:var(--pico-primary-background);--pico-border-color:var(--pico-primary-border);background-image:var(--pico-icon-minus);background-position:center;background-size:.75em auto;background-repeat:no-repeat}[type=radio]{border-radius:50%}[type=radio]:checked,[type=radio]:checked:active,[type=radio]:checked:focus{--pico-background-color:var(--pico-primary-inverse);border-width:.35em;background-image:none}[type=checkbox][role=switch]{--pico-background-color:var(--pico-switch-background-color);--pico-color:var(--pico-switch-color);width:2.25em;height:1.25em;border:var(--pico-border-width) solid var(--pico-border-color);border-radius:1.25em;background-color:var(--pico-background-color);line-height:1.25em}[type=checkbox][role=switch]:not([aria-invalid]){--pico-border-color:var(--pico-switch-background-color)}[type=checkbox][role=switch]:before{display:block;aspect-ratio:1;height:100%;border-radius:50%;background-color:var(--pico-color);box-shadow:var(--pico-switch-thumb-box-shadow);content:"";transition:margin .1s ease-in-out}[type=checkbox][role=switch]:focus{--pico-background-color:var(--pico-switch-background-color);--pico-border-color:var(--pico-switch-background-color)}[type=checkbox][role=switch]:checked{--pico-background-color:var(--pico-switch-checked-background-color);--pico-border-color:var(--pico-switch-checked-background-color);background-image:none}[type=checkbox][role=switch]:checked::before{margin-inline-start:calc(2.25em - 1.25em)}[type=checkbox][role=switch][disabled]{--pico-background-color:var(--pico-border-color)}[type=checkbox][aria-invalid=false]:checked,[type=checkbox][aria-invalid=false]:checked:active,[type=checkbox][aria-invalid=false]:checked:focus,[type=checkbox][role=switch][aria-invalid=false]:checked,[type=checkbox][role=switch][aria-invalid=false]:checked:active,[type=checkbox][role=switch][aria-invalid=false]:checked:focus{--pico-background-color:var(--pico-form-element-valid-border-color)}[type=checkbox]:checked:active[aria-invalid=true],[type=checkbox]:checked:focus[aria-invalid=true],[type=checkbox]:checked[aria-invalid=true],[type=checkbox][role=switch]:checked:active[aria-invalid=true],[type=checkbox][role=switch]:checked:focus[aria-invalid=true],[type=checkbox][role=switch]:checked[aria-invalid=true]{--pico-background-color:var(--pico-form-element-invalid-border-color)}[type=checkbox][aria-invalid=false]:checked,[type=checkbox][aria-invalid=false]:checked:active,[type=checkbox][aria-invalid=false]:checked:focus,[type=checkbox][role=switch][aria-invalid=false]:checked,[type=checkbox][role=switch][aria-invalid=false]:checked:active,[type=checkbox][role=switch][aria-invalid=false]:checked:focus,[type=radio][aria-invalid=false]:checked,[type=radio][aria-invalid=false]:checked:active,[type=radio][aria-invalid=false]:checked:focus{--pico-border-color:var(--pico-form-element-valid-border-color)}[type=checkbox]:checked:active[aria-invalid=true],[type=checkbox]:checked:focus[aria-invalid=true],[type=checkbox]:checked[aria-invalid=true],[type=checkbox][role=switch]:checked:active[aria-invalid=true],[type=checkbox][role=switch]:checked:focus[aria-invalid=true],[type=checkbox][role=switch]:checked[aria-invalid=true],[type=radio]:checked:active[aria-invalid=true],[type=radio]:checked:focus[aria-invalid=true],[type=radio]:checked[aria-invalid=true]{--pico-border-color:var(--pico-form-element-invalid-border-color)}[type=color]::-webkit-color-swatch-wrapper{padding:0}[type=color]::-moz-focus-inner{padding:0}[type=color]::-webkit-color-swatch{border:0;border-radius:calc(var(--pico-border-radius) * .5)}[type=color]::-moz-color-swatch{border:0;border-radius:calc(var(--pico-border-radius) * .5)}input:not([type=checkbox],[type=radio],[type=range],[type=file]):is([type=date],[type=datetime-local],[type=month],[type=time],[type=week]){--pico-icon-position:0.75rem;--pico-icon-width:1rem;padding-right:calc(var(--pico-icon-width) + var(--pico-icon-position));background-image:var(--pico-icon-date);background-position:center right var(--pico-icon-position);background-size:var(--pico-icon-width) auto;background-repeat:no-repeat}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=time]{background-image:var(--pico-icon-time)}[type=date]::-webkit-calendar-picker-indicator,[type=datetime-local]::-webkit-calendar-picker-indicator,[type=month]::-webkit-calendar-picker-indicator,[type=time]::-webkit-calendar-picker-indicator,[type=week]::-webkit-calendar-picker-indicator{width:var(--pico-icon-width);margin-right:calc(var(--pico-icon-width) * -1);margin-left:var(--pico-icon-position);opacity:0}@-moz-document url-prefix(){[type=date],[type=datetime-local],[type=month],[type=time],[type=week]{padding-right:var(--pico-form-element-spacing-horizontal)!important;background-image:none!important}}[dir=rtl] :is([type=date],[type=datetime-local],[type=month],[type=time],[type=week]){text-align:right}[type=file]{--pico-color:var(--pico-muted-color);margin-left:calc(var(--pico-outline-width) * -1);padding:calc(var(--pico-form-element-spacing-vertical) * .5) 0;padding-left:var(--pico-outline-width);border:0;border-radius:0;background:0 0}[type=file]::file-selector-button{margin-right:calc(var(--pico-spacing)/ 2);padding:calc(var(--pico-form-element-spacing-vertical) * .5) var(--pico-form-element-spacing-horizontal)}[type=file]:is(:hover,:active,:focus)::file-selector-button{--pico-background-color:var(--pico-secondary-hover-background);--pico-border-color:var(--pico-secondary-hover-border)}[type=file]:focus::file-selector-button{--pico-box-shadow:var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),0 0 0 var(--pico-outline-width) var(--pico-secondary-focus)}[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:1.25rem;background:0 0}[type=range]::-webkit-slider-runnable-track{width:100%;height:.375rem;border-radius:var(--pico-border-radius);background-color:var(--pico-range-border-color);-webkit-transition:background-color var(--pico-transition),box-shadow var(--pico-transition);transition:background-color var(--pico-transition),box-shadow var(--pico-transition)}[type=range]::-moz-range-track{width:100%;height:.375rem;border-radius:var(--pico-border-radius);background-color:var(--pico-range-border-color);-moz-transition:background-color var(--pico-transition),box-shadow var(--pico-transition);transition:background-color var(--pico-transition),box-shadow var(--pico-transition)}[type=range]::-ms-track{width:100%;height:.375rem;border-radius:var(--pico-border-radius);background-color:var(--pico-range-border-color);-ms-transition:background-color var(--pico-transition),box-shadow var(--pico-transition);transition:background-color var(--pico-transition),box-shadow var(--pico-transition)}[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.4375rem;border:2px solid var(--pico-range-thumb-border-color);border-radius:50%;background-color:var(--pico-range-thumb-color);cursor:pointer;-webkit-transition:background-color var(--pico-transition),transform var(--pico-transition);transition:background-color var(--pico-transition),transform var(--pico-transition)}[type=range]::-moz-range-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.4375rem;border:2px solid var(--pico-range-thumb-border-color);border-radius:50%;background-color:var(--pico-range-thumb-color);cursor:pointer;-moz-transition:background-color var(--pico-transition),transform var(--pico-transition);transition:background-color var(--pico-transition),transform var(--pico-transition)}[type=range]::-ms-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.4375rem;border:2px solid var(--pico-range-thumb-border-color);border-radius:50%;background-color:var(--pico-range-thumb-color);cursor:pointer;-ms-transition:background-color var(--pico-transition),transform var(--pico-transition);transition:background-color var(--pico-transition),transform var(--pico-transition)}[type=range]:active,[type=range]:focus-within{--pico-range-border-color:var(--pico-range-active-border-color);--pico-range-thumb-color:var(--pico-range-thumb-active-color)}[type=range]:active::-webkit-slider-thumb{transform:scale(1.25)}[type=range]:active::-moz-range-thumb{transform:scale(1.25)}[type=range]:active::-ms-thumb{transform:scale(1.25)}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search]{padding-inline-start:calc(var(--pico-form-element-spacing-horizontal) + 1.75rem);background-image:var(--pico-icon-search);background-position:center left calc(var(--pico-form-element-spacing-horizontal) + .125rem);background-size:1rem auto;background-repeat:no-repeat}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid]{padding-inline-start:calc(var(--pico-form-element-spacing-horizontal) + 1.75rem)!important;background-position:center left 1.125rem,center right .75rem}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid=false]{background-image:var(--pico-icon-search),var(--pico-icon-valid)}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid=true]{background-image:var(--pico-icon-search),var(--pico-icon-invalid)}[dir=rtl] :where(input):not([type=checkbox],[type=radio],[type=range],[type=file])[type=search]{background-position:center right 1.125rem}[dir=rtl] :where(input):not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid]{background-position:center right 1.125rem,center left .75rem}details{display:block;margin-bottom:var(--pico-spacing)}details summary{line-height:1rem;list-style-type:none;cursor:pointer;transition:color var(--pico-transition)}details summary:not([role]){color:var(--pico-accordion-close-summary-color)}details summary::-webkit-details-marker{display:none}details summary::marker{display:none}details summary::-moz-list-bullet{list-style-type:none}details summary::after{display:block;width:1rem;height:1rem;margin-inline-start:calc(var(--pico-spacing,1rem) * .5);float:right;transform:rotate(-90deg);background-image:var(--pico-icon-chevron);background-position:right center;background-size:1rem auto;background-repeat:no-repeat;content:"";transition:transform var(--pico-transition)}details summary:focus{outline:0}details summary:focus:not([role]){color:var(--pico-accordion-active-summary-color)}details summary:focus-visible:not([role]){outline:var(--pico-outline-width) solid var(--pico-primary-focus);outline-offset:calc(var(--pico-spacing,1rem) * 0.5);color:var(--pico-primary)}details summary[role=button]{width:100%;text-align:left}details summary[role=button]::after{height:calc(1rem * var(--pico-line-height,1.5))}details[open]>summary{margin-bottom:var(--pico-spacing)}details[open]>summary:not([role]):not(:focus){color:var(--pico-accordion-open-summary-color)}details[open]>summary::after{transform:rotate(0)}[dir=rtl] details summary{text-align:right}[dir=rtl] details summary::after{float:left;background-position:left center}article{margin-bottom:var(--pico-block-spacing-vertical);padding:var(--pico-block-spacing-vertical) var(--pico-block-spacing-horizontal);border-radius:var(--pico-border-radius);background:var(--pico-card-background-color);box-shadow:var(--pico-card-box-shadow)}article>footer,article>header{margin-right:calc(var(--pico-block-spacing-horizontal) * -1);margin-left:calc(var(--pico-block-spacing-horizontal) * -1);padding:calc(var(--pico-block-spacing-vertical) * .66) var(--pico-block-spacing-horizontal);background-color:var(--pico-card-sectioning-background-color)}article>header{margin-top:calc(var(--pico-block-spacing-vertical) * -1);margin-bottom:var(--pico-block-spacing-vertical);border-bottom:var(--pico-border-width) solid var(--pico-card-border-color);border-top-right-radius:var(--pico-border-radius);border-top-left-radius:var(--pico-border-radius)}article>footer{margin-top:var(--pico-block-spacing-vertical);margin-bottom:calc(var(--pico-block-spacing-vertical) * -1);border-top:var(--pico-border-width) solid var(--pico-card-border-color);border-bottom-right-radius:var(--pico-border-radius);border-bottom-left-radius:var(--pico-border-radius)}details.dropdown{position:relative;border-bottom:none}details.dropdown summary::after,details.dropdown>a::after,details.dropdown>button::after{display:block;width:1rem;height:calc(1rem * var(--pico-line-height,1.5));margin-inline-start:.25rem;float:right;transform:rotate(0) translateX(.2rem);background-image:var(--pico-icon-chevron);background-position:right center;background-size:1rem auto;background-repeat:no-repeat;content:""}nav details.dropdown{margin-bottom:0}details.dropdown summary:not([role]){height:calc(1rem * var(--pico-line-height) + var(--pico-form-element-spacing-vertical) * 2 + var(--pico-border-width) * 2);padding:var(--pico-form-element-spacing-vertical) var(--pico-form-element-spacing-horizontal);border:var(--pico-border-width) solid var(--pico-form-element-border-color);border-radius:var(--pico-border-radius);background-color:var(--pico-form-element-background-color);color:var(--pico-form-element-placeholder-color);line-height:inherit;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background-color var(--pico-transition),border-color var(--pico-transition),color var(--pico-transition),box-shadow var(--pico-transition)}details.dropdown summary:not([role]):active,details.dropdown summary:not([role]):focus{border-color:var(--pico-form-element-active-border-color);background-color:var(--pico-form-element-active-background-color)}details.dropdown summary:not([role]):focus{box-shadow:0 0 0 var(--pico-outline-width) var(--pico-form-element-focus-color)}details.dropdown summary:not([role]):focus-visible{outline:0}details.dropdown summary:not([role])[aria-invalid=false]{--pico-form-element-border-color:var(--pico-form-element-valid-border-color);--pico-form-element-active-border-color:var(--pico-form-element-valid-focus-color);--pico-form-element-focus-color:var(--pico-form-element-valid-focus-color)}details.dropdown summary:not([role])[aria-invalid=true]{--pico-form-element-border-color:var(--pico-form-element-invalid-border-color);--pico-form-element-active-border-color:var(--pico-form-element-invalid-focus-color);--pico-form-element-focus-color:var(--pico-form-element-invalid-focus-color)}nav details.dropdown{display:inline;margin:calc(var(--pico-nav-element-spacing-vertical) * -1) 0}nav details.dropdown summary::after{transform:rotate(0) translateX(0)}nav details.dropdown summary:not([role]){height:calc(1rem * var(--pico-line-height) + var(--pico-nav-link-spacing-vertical) * 2);padding:calc(var(--pico-nav-link-spacing-vertical) - var(--pico-border-width) * 2) var(--pico-nav-link-spacing-horizontal)}nav details.dropdown summary:not([role]):focus-visible{box-shadow:0 0 0 var(--pico-outline-width) var(--pico-primary-focus)}details.dropdown summary+ul{display:flex;z-index:99;position:absolute;left:0;flex-direction:column;width:100%;min-width:-moz-fit-content;min-width:fit-content;margin:0;margin-top:var(--pico-outline-width);padding:0;border:var(--pico-border-width) solid var(--pico-dropdown-border-color);border-radius:var(--pico-border-radius);background-color:var(--pico-dropdown-background-color);box-shadow:var(--pico-dropdown-box-shadow);color:var(--pico-dropdown-color);white-space:nowrap;opacity:0;transition:opacity var(--pico-transition),transform 0s ease-in-out 1s}details.dropdown summary+ul[dir=rtl]{right:0;left:auto}details.dropdown summary+ul li{width:100%;margin-bottom:0;padding:calc(var(--pico-form-element-spacing-vertical) * .5) var(--pico-form-element-spacing-horizontal);list-style:none}details.dropdown summary+ul li:first-of-type{margin-top:calc(var(--pico-form-element-spacing-vertical) * .5)}details.dropdown summary+ul li:last-of-type{margin-bottom:calc(var(--pico-form-element-spacing-vertical) * .5)}details.dropdown summary+ul li a{display:block;margin:calc(var(--pico-form-element-spacing-vertical) * -.5) calc(var(--pico-form-element-spacing-horizontal) * -1);padding:calc(var(--pico-form-element-spacing-vertical) * .5) var(--pico-form-element-spacing-horizontal);overflow:hidden;border-radius:0;color:var(--pico-dropdown-color);text-decoration:none;text-overflow:ellipsis}details.dropdown summary+ul li a:active,details.dropdown summary+ul li a:focus,details.dropdown summary+ul li a:focus-visible,details.dropdown summary+ul li a:hover,details.dropdown summary+ul li a[aria-current]:not([aria-current=false]){background-color:var(--pico-dropdown-hover-background-color)}details.dropdown summary+ul li label{width:100%}details.dropdown summary+ul li:has(label):hover{background-color:var(--pico-dropdown-hover-background-color)}details.dropdown[open] summary{margin-bottom:0}details.dropdown[open] summary+ul{transform:scaleY(1);opacity:1;transition:opacity var(--pico-transition),transform 0s ease-in-out 0s}details.dropdown[open] summary::before{display:block;z-index:1;position:fixed;width:100vw;height:100vh;inset:0;background:0 0;content:"";cursor:default}label>details.dropdown{margin-top:calc(var(--pico-spacing) * .25)}[role=group],[role=search]{display:inline-flex;position:relative;width:100%;margin-bottom:var(--pico-spacing);border-radius:var(--pico-border-radius);box-shadow:var(--pico-group-box-shadow,0 0 0 transparent);vertical-align:middle;transition:box-shadow var(--pico-transition)}[role=group] input:not([type=checkbox],[type=radio]),[role=group] select,[role=group]>*,[role=search] input:not([type=checkbox],[type=radio]),[role=search] select,[role=search]>*{position:relative;flex:1 1 auto;margin-bottom:0}[role=group] input:not([type=checkbox],[type=radio]):not(:first-child),[role=group] select:not(:first-child),[role=group]>:not(:first-child),[role=search] input:not([type=checkbox],[type=radio]):not(:first-child),[role=search] select:not(:first-child),[role=search]>:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}[role=group] input:not([type=checkbox],[type=radio]):not(:last-child),[role=group] select:not(:last-child),[role=group]>:not(:last-child),[role=search] input:not([type=checkbox],[type=radio]):not(:last-child),[role=search] select:not(:last-child),[role=search]>:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}[role=group] input:not([type=checkbox],[type=radio]):focus,[role=group] select:focus,[role=group]>:focus,[role=search] input:not([type=checkbox],[type=radio]):focus,[role=search] select:focus,[role=search]>:focus{z-index:2}[role=group] [role=button]:not(:first-child),[role=group] [type=button]:not(:first-child),[role=group] [type=reset]:not(:first-child),[role=group] [type=submit]:not(:first-child),[role=group] button:not(:first-child),[role=group] input:not([type=checkbox],[type=radio]):not(:first-child),[role=group] select:not(:first-child),[role=search] [role=button]:not(:first-child),[role=search] [type=button]:not(:first-child),[role=search] [type=reset]:not(:first-child),[role=search] [type=submit]:not(:first-child),[role=search] button:not(:first-child),[role=search] input:not([type=checkbox],[type=radio]):not(:first-child),[role=search] select:not(:first-child){margin-left:calc(var(--pico-border-width) * -1)}[role=group] [role=button],[role=group] [type=button],[role=group] [type=reset],[role=group] [type=submit],[role=group] button,[role=search] [role=button],[role=search] [type=button],[role=search] [type=reset],[role=search] [type=submit],[role=search] button{width:auto}@supports selector(:has(*)){[role=group]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus),[role=search]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus){--pico-group-box-shadow:var(--pico-group-box-shadow-focus-with-button)}[role=group]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus) input:not([type=checkbox],[type=radio]),[role=group]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus) select,[role=search]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus) input:not([type=checkbox],[type=radio]),[role=search]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus) select{border-color:transparent}[role=group]:has(input:not([type=submit],[type=button]):focus,select:focus),[role=search]:has(input:not([type=submit],[type=button]):focus,select:focus){--pico-group-box-shadow:var(--pico-group-box-shadow-focus-with-input)}[role=group]:has(input:not([type=submit],[type=button]):focus,select:focus) [role=button],[role=group]:has(input:not([type=submit],[type=button]):focus,select:focus) [type=button],[role=group]:has(input:not([type=submit],[type=button]):focus,select:focus) [type=submit],[role=group]:has(input:not([type=submit],[type=button]):focus,select:focus) button,[role=search]:has(input:not([type=submit],[type=button]):focus,select:focus) [role=button],[role=search]:has(input:not([type=submit],[type=button]):focus,select:focus) [type=button],[role=search]:has(input:not([type=submit],[type=button]):focus,select:focus) [type=submit],[role=search]:has(input:not([type=submit],[type=button]):focus,select:focus) button{--pico-button-box-shadow:0 0 0 var(--pico-border-width) var(--pico-primary-border);--pico-button-hover-box-shadow:0 0 0 var(--pico-border-width) var(--pico-primary-hover-border)}[role=group] [role=button]:focus,[role=group] [type=button]:focus,[role=group] [type=reset]:focus,[role=group] [type=submit]:focus,[role=group] button:focus,[role=search] [role=button]:focus,[role=search] [type=button]:focus,[role=search] [type=reset]:focus,[role=search] [type=submit]:focus,[role=search] button:focus{box-shadow:none}}[role=search]>:first-child{border-top-left-radius:5rem;border-bottom-left-radius:5rem}[role=search]>:last-child{border-top-right-radius:5rem;border-bottom-right-radius:5rem}[aria-busy=true]:not(input,select,textarea,html){white-space:nowrap}[aria-busy=true]:not(input,select,textarea,html)::before{display:inline-block;width:1em;height:1em;background-image:var(--pico-icon-loading);background-size:1em auto;background-repeat:no-repeat;content:"";vertical-align:-.125em}[aria-busy=true]:not(input,select,textarea,html):not(:empty)::before{margin-inline-end:calc(var(--pico-spacing) * .5)}[aria-busy=true]:not(input,select,textarea,html):empty{text-align:center}[role=button][aria-busy=true],[type=button][aria-busy=true],[type=reset][aria-busy=true],[type=submit][aria-busy=true],a[aria-busy=true],button[aria-busy=true]{pointer-events:none}:root{--pico-scrollbar-width:0px}dialog{display:flex;z-index:999;position:fixed;top:0;right:0;bottom:0;left:0;align-items:center;justify-content:center;width:inherit;min-width:100%;height:inherit;min-height:100%;padding:0;border:0;-webkit-backdrop-filter:var(--pico-modal-overlay-backdrop-filter);backdrop-filter:var(--pico-modal-overlay-backdrop-filter);background-color:var(--pico-modal-overlay-background-color);color:var(--pico-color)}dialog article{width:100%;max-height:calc(100vh - var(--pico-spacing) * 2);margin:var(--pico-spacing);overflow:auto}@media (min-width:576px){dialog article{max-width:510px}}@media (min-width:768px){dialog article{max-width:700px}}dialog article>header>*{margin-bottom:0}dialog article>header .close,dialog article>header :is(a,button)[rel=prev]{margin:0;margin-left:var(--pico-spacing);padding:0;float:right}dialog article>footer{text-align:right}dialog article>footer [role=button],dialog article>footer button{margin-bottom:0}dialog article>footer [role=button]:not(:first-of-type),dialog article>footer button:not(:first-of-type){margin-left:calc(var(--pico-spacing) * .5)}dialog article .close,dialog article :is(a,button)[rel=prev]{display:block;width:1rem;height:1rem;margin-top:calc(var(--pico-spacing) * -1);margin-bottom:var(--pico-spacing);margin-left:auto;border:none;background-image:var(--pico-icon-close);background-position:center;background-size:auto 1rem;background-repeat:no-repeat;background-color:transparent;opacity:.5;transition:opacity var(--pico-transition)}dialog article .close:is([aria-current]:not([aria-current=false]),:hover,:active,:focus),dialog article :is(a,button)[rel=prev]:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){opacity:1}dialog:not([open]),dialog[open=false]{display:none}.modal-is-open{padding-right:var(--pico-scrollbar-width,0);overflow:hidden;pointer-events:none;touch-action:none}.modal-is-open dialog{pointer-events:auto;touch-action:auto}:where(.modal-is-opening,.modal-is-closing) dialog,:where(.modal-is-opening,.modal-is-closing) dialog>article{animation-duration:.2s;animation-timing-function:ease-in-out;animation-fill-mode:both}:where(.modal-is-opening,.modal-is-closing) dialog{animation-duration:.8s;animation-name:modal-overlay}:where(.modal-is-opening,.modal-is-closing) dialog>article{animation-delay:.2s;animation-name:modal}.modal-is-closing dialog,.modal-is-closing dialog>article{animation-delay:0s;animation-direction:reverse}@keyframes modal-overlay{from{-webkit-backdrop-filter:none;backdrop-filter:none;background-color:transparent}}@keyframes modal{from{transform:translateY(-100%);opacity:0}}:where(nav li)::before{float:left;content:"​"}nav,nav ul{display:flex}nav{justify-content:space-between;overflow:visible}nav ol,nav ul{align-items:center;margin-bottom:0;padding:0;list-style:none}nav ol:first-of-type,nav ul:first-of-type{margin-left:calc(var(--pico-nav-element-spacing-horizontal) * -1)}nav ol:last-of-type,nav ul:last-of-type{margin-right:calc(var(--pico-nav-element-spacing-horizontal) * -1)}nav li{display:inline-block;margin:0;padding:var(--pico-nav-element-spacing-vertical) var(--pico-nav-element-spacing-horizontal)}nav li :where(a,[role=link]){display:inline-block;margin:calc(var(--pico-nav-link-spacing-vertical) * -1) calc(var(--pico-nav-link-spacing-horizontal) * -1);padding:var(--pico-nav-link-spacing-vertical) var(--pico-nav-link-spacing-horizontal);border-radius:var(--pico-border-radius)}nav li :where(a,[role=link]):not(:hover){text-decoration:none}nav li [role=button],nav li [type=button],nav li button,nav li input:not([type=checkbox],[type=radio],[type=range],[type=file]),nav li select{height:auto;margin-right:inherit;margin-bottom:0;margin-left:inherit;padding:calc(var(--pico-nav-link-spacing-vertical) - var(--pico-border-width) * 2) var(--pico-nav-link-spacing-horizontal)}nav[aria-label=breadcrumb]{align-items:center;justify-content:start}nav[aria-label=breadcrumb] ul li:not(:first-child){margin-inline-start:var(--pico-nav-link-spacing-horizontal)}nav[aria-label=breadcrumb] ul li a{margin:calc(var(--pico-nav-link-spacing-vertical) * -1) 0;margin-inline-start:calc(var(--pico-nav-link-spacing-horizontal) * -1)}nav[aria-label=breadcrumb] ul li:not(:last-child)::after{display:inline-block;position:absolute;width:calc(var(--pico-nav-link-spacing-horizontal) * 4);margin:0 calc(var(--pico-nav-link-spacing-horizontal) * -1);content:var(--pico-nav-breadcrumb-divider);color:var(--pico-muted-color);text-align:center;text-decoration:none;white-space:nowrap}nav[aria-label=breadcrumb] a[aria-current]:not([aria-current=false]){background-color:transparent;color:inherit;text-decoration:none;pointer-events:none}aside li,aside nav,aside ol,aside ul{display:block}aside li{padding:calc(var(--pico-nav-element-spacing-vertical) * .5) var(--pico-nav-element-spacing-horizontal)}aside li a{display:block}aside li [role=button]{margin:inherit}[dir=rtl] nav[aria-label=breadcrumb] ul li:not(:last-child) ::after{content:"\\"}progress{display:inline-block;vertical-align:baseline}progress{-webkit-appearance:none;-moz-appearance:none;display:inline-block;appearance:none;width:100%;height:.5rem;margin-bottom:calc(var(--pico-spacing) * .5);overflow:hidden;border:0;border-radius:var(--pico-border-radius);background-color:var(--pico-progress-background-color);color:var(--pico-progress-color)}progress::-webkit-progress-bar{border-radius:var(--pico-border-radius);background:0 0}progress[value]::-webkit-progress-value{background-color:var(--pico-progress-color);-webkit-transition:inline-size var(--pico-transition);transition:inline-size var(--pico-transition)}progress::-moz-progress-bar{background-color:var(--pico-progress-color)}@media (prefers-reduced-motion:no-preference){progress:indeterminate{background:var(--pico-progress-background-color) linear-gradient(to right,var(--pico-progress-color) 30%,var(--pico-progress-background-color) 30%) top left/150% 150% no-repeat;animation:progress-indeterminate 1s linear infinite}progress:indeterminate[value]::-webkit-progress-value{background-color:transparent}progress:indeterminate::-moz-progress-bar{background-color:transparent}}@media (prefers-reduced-motion:no-preference){[dir=rtl] progress:indeterminate{animation-direction:reverse}}@keyframes progress-indeterminate{0%{background-position:200% 0}100%{background-position:-200% 0}}[data-tooltip]{position:relative}[data-tooltip]:not(a,button,input){border-bottom:1px dotted;text-decoration:none;cursor:help}[data-tooltip]::after,[data-tooltip]::before,[data-tooltip][data-placement=top]::after,[data-tooltip][data-placement=top]::before{display:block;z-index:99;position:absolute;bottom:100%;left:50%;padding:.25rem .5rem;overflow:hidden;transform:translate(-50%,-.25rem);border-radius:var(--pico-border-radius);background:var(--pico-tooltip-background-color);content:attr(data-tooltip);color:var(--pico-tooltip-color);font-style:normal;font-weight:var(--pico-font-weight);font-size:.875rem;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;opacity:0;pointer-events:none}[data-tooltip]::after,[data-tooltip][data-placement=top]::after{padding:0;transform:translate(-50%,0);border-top:.3rem solid;border-right:.3rem solid transparent;border-left:.3rem solid transparent;border-radius:0;background-color:transparent;content:"";color:var(--pico-tooltip-background-color)}[data-tooltip][data-placement=bottom]::after,[data-tooltip][data-placement=bottom]::before{top:100%;bottom:auto;transform:translate(-50%,.25rem)}[data-tooltip][data-placement=bottom]:after{transform:translate(-50%,-.3rem);border:.3rem solid transparent;border-bottom:.3rem solid}[data-tooltip][data-placement=left]::after,[data-tooltip][data-placement=left]::before{top:50%;right:100%;bottom:auto;left:auto;transform:translate(-.25rem,-50%)}[data-tooltip][data-placement=left]:after{transform:translate(.3rem,-50%);border:.3rem solid transparent;border-left:.3rem solid}[data-tooltip][data-placement=right]::after,[data-tooltip][data-placement=right]::before{top:50%;right:auto;bottom:auto;left:100%;transform:translate(.25rem,-50%)}[data-tooltip][data-placement=right]:after{transform:translate(-.3rem,-50%);border:.3rem solid transparent;border-right:.3rem solid}[data-tooltip]:focus::after,[data-tooltip]:focus::before,[data-tooltip]:hover::after,[data-tooltip]:hover::before{opacity:1}@media (hover:hover) and (pointer:fine){[data-tooltip]:focus::after,[data-tooltip]:focus::before,[data-tooltip]:hover::after,[data-tooltip]:hover::before{--pico-tooltip-slide-to:translate(-50%, -0.25rem);transform:translate(-50%,.75rem);animation-duration:.2s;animation-fill-mode:forwards;animation-name:tooltip-slide;opacity:0}[data-tooltip]:focus::after,[data-tooltip]:hover::after{--pico-tooltip-caret-slide-to:translate(-50%, 0rem);transform:translate(-50%,-.25rem);animation-name:tooltip-caret-slide}[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:focus::before,[data-tooltip][data-placement=bottom]:hover::after,[data-tooltip][data-placement=bottom]:hover::before{--pico-tooltip-slide-to:translate(-50%, 0.25rem);transform:translate(-50%,-.75rem);animation-name:tooltip-slide}[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:hover::after{--pico-tooltip-caret-slide-to:translate(-50%, -0.3rem);transform:translate(-50%,-.5rem);animation-name:tooltip-caret-slide}[data-tooltip][data-placement=left]:focus::after,[data-tooltip][data-placement=left]:focus::before,[data-tooltip][data-placement=left]:hover::after,[data-tooltip][data-placement=left]:hover::before{--pico-tooltip-slide-to:translate(-0.25rem, -50%);transform:translate(.75rem,-50%);animation-name:tooltip-slide}[data-tooltip][data-placement=left]:focus::after,[data-tooltip][data-placement=left]:hover::after{--pico-tooltip-caret-slide-to:translate(0.3rem, -50%);transform:translate(.05rem,-50%);animation-name:tooltip-caret-slide}[data-tooltip][data-placement=right]:focus::after,[data-tooltip][data-placement=right]:focus::before,[data-tooltip][data-placement=right]:hover::after,[data-tooltip][data-placement=right]:hover::before{--pico-tooltip-slide-to:translate(0.25rem, -50%);transform:translate(-.75rem,-50%);animation-name:tooltip-slide}[data-tooltip][data-placement=right]:focus::after,[data-tooltip][data-placement=right]:hover::after{--pico-tooltip-caret-slide-to:translate(-0.3rem, -50%);transform:translate(-.05rem,-50%);animation-name:tooltip-caret-slide}}@keyframes tooltip-slide{to{transform:var(--pico-tooltip-slide-to);opacity:1}}@keyframes tooltip-caret-slide{50%{opacity:0}to{transform:var(--pico-tooltip-caret-slide-to);opacity:1}}[aria-controls]{cursor:pointer}[aria-disabled=true],[disabled]{cursor:not-allowed}[aria-hidden=false][hidden]{display:initial}[aria-hidden=false][hidden]:not(:focus){clip:rect(0,0,0,0);position:absolute}[tabindex],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation}[dir=rtl]{direction:rtl}@media (prefers-reduced-motion:reduce){:not([aria-busy=true]),:not([aria-busy=true])::after,:not([aria-busy=true])::before{background-attachment:initial!important;animation-duration:1ms!important;animation-delay:-1ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-delay:0s!important;transition-duration:0s!important}} \ No newline at end of file